-
-
[旧帖]
[求助]借鸡生蛋
0.00雪花
-
发表于:
2009-8-10 22:52
5985
-
前面发了一帖,被版主引用第17条锁帖警告。同样问题,现在换个方式问问看行不行。
某程序,无壳,可以正常运行。结构见图:
将代码段全部换成另一个长度相同的代码,PE头上入口也做了修正,但是无法运行,而且OD也无法加载,提示:
由于替换和被替换的程序在功能、资源几乎完全相同(核心算法有别),所以Import表应该不用修正,而且代码段替换未破坏资源。请问是什么地方出了问题,不能正常运行?
我曾经把区段内的代码一个个子程序地替换,在OD里是可以往下运行的,但运行到呼出主界面的时候,Find和Load resource都没有出错,而在DialogBoxIndirectParamAorW出出错。
00401922 |> \6A 00 push 0 ; /lParam = NULL
00401924 |. 68 20164000 push 00401620 ; |DlgProc = keygen_z.00401620
00401929 |. 6A 00 push 0 ; |hOwner = NULL
0040192B |. 6A 6B push 6B ; |pTemplate = 6B
0040192D |. 57 push edi ; |hInst
0040192E |. 893D 40704100 mov dword ptr [417040], edi ; |
00401934 |. FF15 6C314100 call dword ptr [41316C] ; \DialogBoxParamA
77D3B144 > 8BFF mov edi, edi
77D3B146 55 push ebp
77D3B147 8BEC mov ebp, esp
77D3B149 53 push ebx
77D3B14A 56 push esi
77D3B14B 8B75 08 mov esi, dword ptr [ebp+8]
77D3B14E 6A 00 push 0
77D3B150 FF75 0C push dword ptr [ebp+C]
77D3B153 83CB FF or ebx, FFFFFFFF
77D3B156 6A 05 push 5
77D3B158 56 push esi
77D3B159 FF15 C414D777 call dword ptr [77D714C4] ; kernel32.FindResourceExA
77D3B15F 85C0 test eax, eax
77D3B161 74 40 je short 77D3B1A3
77D3B163 57 push edi
77D3B164 50 push eax
77D3B165 56 push esi
77D3B166 FF15 E412D777 call dword ptr [77D712E4] ; kernel32.LoadResource
77D3B16C 8BF8 mov edi, eax
77D3B16E 85FF test edi, edi
77D3B170 74 30 je short 77D3B1A2
77D3B172 56 push esi
77D3B173 57 push edi
77D3B174 FF15 EC12D777 call dword ptr [77D712EC] ; USER32.77D18D06
77D3B17A 85C0 test eax, eax
77D3B17C 74 1C je short 77D3B19A
77D3B17E 6A 02 push 2
77D3B180 FF75 18 push dword ptr [ebp+18]
77D3B183 FF75 14 push dword ptr [ebp+14]
77D3B186 FF75 10 push dword ptr [ebp+10]
77D3B189 50 push eax
77D3B18A 56 push esi
77D3B18B E8 4098FEFF call DialogBoxIndirectParamAorW
小弟还未入门,请高手指点。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)