今天拿到一个程序,运行即全屏+置顶,很是烦人,不方便用第三方软件查看其网络访问情况,用各类资源工具改了半天没得效果。
后来用OD调试了一番,发现其置顶效果并非通过CreateWindowEx(WS_EX_TOPMOST, ……)实现,那么可能是通过SetWindowPos(hwnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE)来实现的。第二个参数HWND_TOPMOST的值为0x-1,在OD下为FFFFFFFF.
我们将其修改为其它非该值的任意值即可。
0045C5E0 |. /74 03 je XXX程序.0045C5E5 ; 这里跳过即刻去掉窗口置顶 0045C5E2 |. |8B40 1C mov eax,dword ptr ds:[eax+0x1C] ; 这里会给eax赋值-1 即topmost 0045C5E5 |> \FF75 1C push [arg.6] ; /Flags 0045C5E8 |. FF75 18 push [arg.5] ; |Height 0045C5EB |. FF75 14 push [arg.4] ; |Width 0045C5EE |. FF75 10 push [arg.3] ; |Y 0045C5F1 |. FF75 0C push [arg.2] ; |X 0045C5F4 |. 50 push eax ; |设置SetWindowPos的第二个参数为eax的值 0045C5F5 |. FF71 1C push dword ptr ds:[ecx+0x1C] ; |hWnd 0045C5F8 |. FF15 60D44600 call dword ptr ds:[<&USER32.SetWindowPos>; \SetWindowPos
OD是什么?
支持一下吧,确实是不错的贴子。