事情的经过是这样的, 我想修改一个程序的窗口的标题
但是标题并不是标准的资源, 不能通过ResHacker.exe之类的工具修改
所以, 用Ollydbg修改应该是目前我知道的比较好的选择了, 就像修改标准的OllyDbg的标题为中文或其它个性化的名称一样
我碰到的问题跟OD直接修改不同的两点在于:
1. OD里面, 直接把Call CreateWindowExA 前面的倒数第三个push EDX的EDX对应的地址改成想要的标题字符串地址就可以了
而且前面有个长度6字节的LEA EDX .... 可以直接替换... 比较容易实现...但是我碰到的这个, 倒数第三个push EAX, 前面赋值语句
是MOV EAX , DWORD PRT DS:[BPI], 只有两个字节... 必须跳转到程序空白的地方修改....
下面就是生成窗口的代码, Call CreateWindowExA在一个子程序里面, 代码非常紧凑..
1. 008042B2 5D POP EBP ; 帅小呆2.008042EC
2. 008042B3 C3 RETN
3. 008042B4 53 PUSH EBX ; Begin here now
4. 008042B5 56 PUSH ESI
5. 008042B6 8BDA MOV EBX,EDX
6. 008042B8 8BF0 MOV ESI,EAX
7. 008042BA 8B43 20 MOV EAX,DWORD PTR DS:[EBX+20]
8. 008042BD 50 PUSH EAX
9. 008042BE 8B43 34 MOV EAX,DWORD PTR DS:[EBX+34] ; 帅小呆2.00400000
10. 008042C1 50 PUSH EAX
11. 008042C2 6A 00 PUSH 0
12. 008042C4 8B43 1C MOV EAX,DWORD PTR DS:[EBX+1C]
13. 008042C7 50 PUSH EAX
14. 008042C8 8B43 18 MOV EAX,DWORD PTR DS:[EBX+18]
15. 008042CB 50 PUSH EAX
16. 008042CC 8B43 14 MOV EAX,DWORD PTR DS:[EBX+14]
17. 008042CF 50 PUSH EAX
18. 008042D0 8B43 10 MOV EAX,DWORD PTR DS:[EBX+10]
19. 008042D3 50 PUSH EAX
20. 008042D4 8B43 0C MOV EAX,DWORD PTR DS:[EBX+C]
21. 008042D7 50 PUSH EAX
22. 008042D8 8B43 04 MOV EAX,DWORD PTR DS:[EBX+4]
23. 008042DB 50 PUSH EAX
24. 008042DC 8B03 MOV EAX,DWORD PTR DS:[EBX] ; 此处是修改EAX的赋值命令,只有两个字节
25. 008042DE 50 PUSH EAX ; 此处是WindowName存放地址....
26. 008042DF 8D43 4C LEA EAX,DWORD PTR DS:[EBX+4C]
27. 008042E2 50 PUSH EAX
28. 008042E3 8B43 08 MOV EAX,DWORD PTR DS:[EBX+8]
29. 008042E6 50 PUSH EAX ; end next line
30. 008042E7 E8 F8960400 CALL 0084D9E4 ; <JMP.&USER32.CreateWindowExA>
31. 008042EC 8986 80010000 MOV DWORD PTR DS:[ESI+180],EAX
32. 008042F2 5E POP ESI ; 帅小呆2.008042EC
33. 008042F3 5B POP EBX ; 帅小呆2.008042EC
34. 008042F4 C3 RETN
35. 008042F5 90 NOP
36. 008042F6 90 NOP
2. OD里面, CreateWindowExA是简单的代码, 我碰到的情况, CreateWindowExA在一个被调用的子程序里面...
我进行了直接的跳转, 但是发现, 总是出错, 可能跟跳转的时候需要进出这个被调用的子程序还有关系, 不知道该如何处理...
直接用JMP跳出去, 执行完再跳回来, 貌似是会出问题的
我尝试把整个子程序都转移到别的地方, 希望然后再跳回来, 发现子程序还是要RETN到调用它的地方, ...
是不是我应该从调用这个子程序的地方修改? 还是有其他更好的方法?
这个链接:
http://att.newsmth.net/att.php?p.55.46534.3499.rar
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)