大家好:
在三人行的黑鹰破解教程的第20课“20、两种方法“以自己的名字注册ASProtect加壳程序”中,当破解完以后,运行程序,修改图片,然后点击"EXport Button Image",当输入文件名,并点击保存以后,则程序异常,异常代码为C0000005。
我用Ollydbg进行跟踪,发现在00423FD4进入后产生的异常:
00423FA1 . 885D FC mov byte ptr ss:[ebp-4], bl
00423FA4 . E8 712E0500 call 2021_3.00476E1A
00423FA9 . 8D4D F0 lea ecx, dword ptr ss:[ebp-10]
00423FAC . C645 FC 07 mov byte ptr ss:[ebp-4], 7
00423FB0 . E8 22E30400 call 2021_3.004722D7
00423FB5 . 8D4D E8 lea ecx, dword ptr ss:[ebp-18]
00423FB8 . C645 FC 06 mov byte ptr ss:[ebp-4], 6
00423FBC . E8 16E30400 call 2021_3.004722D7
00423FC1 . 8D4D E0 lea ecx, dword ptr ss:[ebp-20]
00423FC4 . C645 FC 05 mov byte ptr ss:[ebp-4], 5
00423FC8 . E8 0AE30400 call 2021_3.004722D7
00423FCD . 8D4D E4 lea ecx, dword ptr ss:[ebp-1C]
00423FD0 . C645 FC 04 mov byte ptr ss:[ebp-4], 4
00423FD4 . E8 FEE20400 call 2021_3.004722D7
00423FD9 > 8D8D E0FDFFFF lea ecx, dword ptr ss:[ebp-220]
00423FDF . C645 FC 0A mov byte ptr ss:[ebp-4], 0A
而此时的寄存器如下:
EAX 1564693
ECX 0012FBE8
EBP 0012FC04
(其他寄存器不相关)
F7跟踪进入
004722D7 /$ 56 push esi
004722D8 |. 8BF1 mov esi, ecx
004722DA |. 8B06 mov eax, dword ptr ds:[esi]
004722DC |. 8D48 F4 lea ecx, dword ptr ds:[eax-C]
004722DF |. 3B0D 144E4C00 cmp ecx, dword ptr ds:[4C4E14] ; 2021_3.004C4E18
004722E5 74 18 je short 2021_3.004722FF
004722E7 |. 83C0 F4 add eax, -0C
004722EA |. 50 push eax ; /pVar = FFFFFFF4
004722EB |. FF15 88234900 call dword ptr ds:[<&kernel32.Interlo>; \InterlockedDecrement
004722F1 |. 85C0 test eax, eax
004722F3 |. 7F 0A jg short 2021_3.004722FF
004722F5 |. 8B0E mov ecx, dword ptr ds:[esi]
当执行到 004722EA时, EAX 的值变成了 FFFFFFF4,因此 后面的调用异常。
那位大牛帮忙看看,这个时候EAX到底该为何值,不胜感激。。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!