Blackbird256 Posted July 11, 2013 Share Posted July 11, 2013 (edited) Does not work on RC4.Please fix.Looks like bigmuscle renamed MessageBoxW to MessageBoxTimeoutW. Seriously? I'll try to compile my own version.Testing it now! Edited July 11, 2013 by Blackbird256 Link to comment Share on other sites More sharing options...
francesco149 Posted July 11, 2013 Author Share Posted July 11, 2013 Does not work on RC4.Please fix.Looks like bigmuscle renamed MessageBoxW to MessageBoxTimeoutW. Seriously? I'll try to compile my own version.Testing it now!It's an undocumented winapi, you gotta check the memory and see if the hook still fits and modify the trampolinehttp://edn.embarcadero.com/article/32736 Link to comment Share on other sites More sharing options...
ORelio Posted July 11, 2013 Share Posted July 11, 2013 Lol it reminds me of when bigmuscle changed the buttons on his dialog boxes (previews 2 & 3) just because I was autoclicking them with AGTweaker.Anyway, good job, upgraded my old v0.7 to RC3, and total respect I read your code and hardly understood half of it Link to comment Share on other sites More sharing options...
bigmuscle Posted July 11, 2013 Share Posted July 11, 2013 Yes, I changed to MessageBoxTimeout function but reason is completely different than bothering with your stupid cracking. However, if you are so active in cracking other's work, you surely will be able to develop Aero Glass completely on your own and there's no need why I should ever release final version and make public version of Win8.1 Aero Glass Link to comment Share on other sites More sharing options...
Blackbird256 Posted July 11, 2013 Share Posted July 11, 2013 (edited) Good thing I won't upgrade to 8.1, because I don't need more metro crap. If they added Start menu back at least I'd consider it.Does not work on RC4.Please fix.Looks like bigmuscle renamed MessageBoxW to MessageBoxTimeoutW. Seriously? I'll try to compile my own version.Testing it now!It's an undocumented winapi, you gotta check the memory and see if the hook still fits and modify the trampolinehttp://edn.embarcadero.com/article/32736I looked over the code and it seems to be more complicated than I thought. I don't know much about assembly so this'll be hard. Edited July 11, 2013 by Blackbird256 Link to comment Share on other sites More sharing options...
francesco149 Posted July 11, 2013 Author Share Posted July 11, 2013 (edited) I looked over the code and it seems to be more complicated than I thought. I don't know much about assembly so this'll be hard.It shouldn't be hard to pull off. I took a look at MessageBoxTimeoutW and these are the opcodes:7FF15190638 - FF F3 - push ebx7FF1519063A - 55 - push rbp7FF1519063B - 56 - push rsi7FF1519063C - 57 - push rdiWarning: code aheadfirst of all you need to get the proc address of the new API so replace the func name in the getprocaddress call:EDIT: fix'd this linepMessageBoxProc = SafeGetProcAddress(GetModuleHandle(_T("user32.dll")), "MessageBoxTimeoutW");so you need to replace the trampoline withBYTE hook::trampoline_MessageBox[] ={ 0xFF, 0xF3, // push ebx 0x55, // push rbp 0x56, // push rsi 0x57, // push rdi 0x68, 0x00, 0x00, 0x00, 0x00, // push 00000000 ; low DWORD of the ret address 0xC7, 0x44, 0x24, 0x04, 0x00, 0x00, 0x00, 0x00, // mov [rsp+04],00000000 ; high DWORD of the ret address 0xC3 // ret};then you need to comment out the nops in hook::attach() since we're overwriting 5 bytes now//*pwNops = 0x9090; // 2 nops to fill the truncated opcodethen you need to fix detach to restore the correct opcodes: void hook::detach() { LPBYTE pbCleanOpcode1a = reinterpret_cast<LPBYTE>(&trampoline_MessageBox[0]); LPDWORD pdwCleanOpcode1b = reinterpret_cast<LPDWORD>(reinterpret_cast<LPBYTE>(pbCleanOpcode1a) + 1); LPBYTE pbOpcode1a = reinterpret_cast<LPBYTE>(pMessageBoxProc); LPDWORD pdwOpcode1b = reinterpret_cast<LPDWORD>(reinterpret_cast<LPBYTE>(pbOpcode1a) + 1); // attempt to unhook MessageBox *pbOpcode1a = *pbCleanOpcode1a; *pdwOpcode1b = *pdwCleanOpcode1b; // erase relay function memset(pbOpcode1a - 15, 0x90, 14); VirtualFree(pbOpcode1a - 15, 14, MEM_RELEASE); // TODO: restore old memory protection (optional) if (*pbOpcode1a != *pbCleanOpcode1a) hook::pMessageBox(NULL, _T("Failed to un-hook MessageBoxTimeout"), appname, MB_OK | MB_ICONWARNING, 0, 0x7FFFFFFF); pMessageBox = reinterpret_cast<pfnMessageBox>(pMessageBoxProc); }Then you need to change the hook function to:int WINAPI hook::hook_MessageBox(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType, WORD wLanguageId, DWORD dwMilliseconds){...}EDIT:You also need to change the typedef in hook.hpp: typedef int (WINAPI *pfnMessageBox)(_In_ HWND hWnd, _In_ LPCTSTR lpText, _In_ LPCTSTR lpCaption, _In_ UINT uType, _In_ WORD wLanguageId, _In_ DWORD dwMilliseconds);and of course change the hook prototype in hook.hpp as well: static int WINAPI hook_MessageBox(_In_ HWND hWnd, _In_ LPCTSTR lpText, _In_ LPCTSTR lpCaption, _In_ UINT uType, _In_ WORD wLanguageId, _In_ DWORD dwMilliseconds);You also need to change the trampoline offsets in hook() LPDWORD pdwTrampolineRetAddressLow = reinterpret_cast<LPDWORD>(&trampoline_MessageBox[6]); LPDWORD pdwTrampolineRetAddressHigh = reinterpret_cast<LPDWORD>(&trampoline_MessageBox[14]); Also, the return address is now different:pMessageBoxReturn = reinterpret_cast<LPVOID>(reinterpret_cast<LPBYTE>(hook::pMessageBox) + 5);Also we need to only make 5 bytes writable now (and add the two extra parameters to each messagebox call as demonstrated here): if (!VirtualProtect(pbOpcode, 5, PAGE_EXECUTE_READWRITE, &dwOldProtect)) { hook::pMessageBox(NULL, _T("Failed to make MessageBoxTimeout writable"), appname, MB_OK | MB_ICONWARNING, 0, 0x7FFFFFFF); return; } I think that's about it, this is just a quick analysis, I haven't tested any of this but I'm quite sure it will work Edited July 19, 2013 by francesco149 Link to comment Share on other sites More sharing options...
DosProbie Posted July 11, 2013 Share Posted July 11, 2013 I don't think discussing a crack in the Same Forum to circumvent the pop-up is fair to all the hard work that BigMuscle has done.There is a discussion already over at MDL over 450 posts on Aero Glass... why don't you take it over there just not here?DP Link to comment Share on other sites More sharing options...
dencorso Posted July 12, 2013 Share Posted July 12, 2013 I don't think discussing a crack in the Same Forum to circumvent the pop-up is fair to all the hard work that BigMuscle has done.There is a discussion already over at MDL over 450 posts on Aero Glass... why don't you take it over there just not here?DP+1 Link to comment Share on other sites More sharing options...
adacom Posted July 12, 2013 Share Posted July 12, 2013 +2i am one of those that moaned about the popup but its gone away - or has in my mind - the plusses of aero far outweigh the popup which seems less and less intrusivei might even miss it when we get the final version Link to comment Share on other sites More sharing options...
francesco149 Posted July 12, 2013 Author Share Posted July 12, 2013 (edited) +2i am one of those that moaned about the popup but its gone away - or has in my mind - the plusses of aero far outweigh the popup which seems less and less intrusivei might even miss it when we get the final version Not when you're playing quake 3 arena and it pops up when you're trying to get some frags done Edited July 12, 2013 by francesco149 Link to comment Share on other sites More sharing options...
DosProbie Posted July 12, 2013 Share Posted July 12, 2013 (edited) +2i am one of those that moaned about the popup but its gone away - or has in my mind - the plusses of aero far outweigh the popup which seems less and less intrusivei might even miss it when we get the final version Not when you're playing quake 3 arena and it pops up when you're trying to get some frags doneThe Game issue has already been discussed many times on here, that's why I made a Toggle Aero with my installer so you can quickly toggle off aero when going to "Game mode" then toggle aero back on when done...DP Edited July 12, 2013 by DosProbie Link to comment Share on other sites More sharing options...
Tripredacus Posted July 12, 2013 Share Posted July 12, 2013 +2i am one of those that moaned about the popup but its gone away - or has in my mind - the plusses of aero far outweigh the popup which seems less and less intrusivei might even miss it when we get the final version Not when you're playing quake 3 arena and it pops up when you're trying to get some frags doneThe Game issue has already been discussed many times on here, that's why I made a Toggle Aero with my installer so you can quickly toggle off aero when going to "Game mode" then toggle aero back on when done...DPThat would make more sense. Why would you want Aero enabled if you can't even see it? Link to comment Share on other sites More sharing options...
bigmuscle Posted July 12, 2013 Share Posted July 12, 2013 I must admit that this whole thing is a bit funny. The real reason why I added this messagebox was just an experiment to test users how they behaves if they get something for free. And you can see something weird which I haven't mentioned yet:a) users are complaining about half-an-hour/once-an-hour messagebox, but the period between each popup is not half an hour and it's not either once an hour. The period is much much longer.b) request to display messagebox is sent during the request to draw glass frame. And these requests don't come when desktop is not visible - e.g. you are playing the game etc.Isn't it weird that users complain about something which doesn't exist in real? Link to comment Share on other sites More sharing options...
MrGRiM Posted July 12, 2013 Share Posted July 12, 2013 (edited) I must admit that this whole thing is a bit funny. The real reason why I added this messagebox was just an experiment to test users how they behaves if they get something for free. And you can see something weird which I haven't mentioned yet:a) users are complaining about half-an-hour/once-an-hour messagebox, but the period between each popup is not half an hour and it's not either once an hour. The period is much much longer. B) request to display messagebox is sent during the request to draw glass frame. And these requests don't come when desktop is not visible - e.g. you are playing the game etc.Isn't it weird that users complain about something which doesn't exist in real?Yep sure is mate, I thought it was strange that the message box sometimes didn't show for a very long period of time, anyway it has never bothered me, I did add the option in the RC3 installer to disable glass but I took it out of the RC4 installer and also though about removing AGTweaker but it served a function purpose to change the theme resource, but that is all, mainly I just wanted to create a fool proof installer so you didn't get constant people complaining that they couldn't get it to work and to get a larger test ordiance to report any problems. Edited July 12, 2013 by MrGRiM Link to comment Share on other sites More sharing options...
MikeRL Posted July 12, 2013 Share Posted July 12, 2013 I don't approve of this myself, but I don't really disapprove of it either. I know users removing the message box is your pet peeve, bigmuscle, but we're pretty close to a stable from what you've said. Most users are not known for being all too patient, myself included. I even installed this. Both are open source, so it should be all good. Nobody is going to discredit you, remove your copyright or licenses with this. As long as someone doesn't put malware in it and post it to a warez site, this late in the game it isn't too big of a deal. Plus, better to get it from MSFN that some shady backdoor infested site. Just grant the impatient a reprieve this late in the game. If bugs prop up, error, hell if someone's computer explodes due to them forking it, it's not your fault. So have no worries. Besides, you are a developer now (I don't know if you professionally develop for companies) but developers tend to have a lot more patience. But even for me that message box got a bit on my nerves. Not at first but when you game a bit on Steam, you're in a zombie-infested barn in HL2:Episode 2 and you have zombies charging at you and the message box steals focus from the game, it's a bit unnerving to say the least. Not all games will pause automatically, either, like Half Life did for me. In fact, a long time ago if a message box like this popped up I would be cursing in my head. Aaah first world problems. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now