下图是点击购买物品时的结果,药品购买成功,但总会跳出如上面的一个错误框,点确定后才会显示:金创药(小量被发现),怎样才能使下面这个错误框不出现呢?详细CALL我取图上来了,大家看看我写得有哪儿不对或者缺少什么?
而详细的购买药品CALL如下:
分析了一下,大家看购买药品CALL在那个JMP内,所以分析一下JMP内的CALL即可.于是,我写了以下的调用:
asm
pushad
push ebp; //保存原始EBP
mov ebp,esp; //原始ESP保存进EBP里
lea eax,[ebp-$10]//创建一个临时变量
mov esi,$63E834
mov esi,[esi]
add esi,$0f8
mov esi,[esi]
add esi,4
mov esi,[esi]
add esi,0
mov esi,[esi]
mov edx,esi
mov ebx,$00404dd8
call ebx//调用这个CALL后,临时变量赋了值
mov eax,[ebp-$10]//然后将这个临时变量传给EAX
push eax
mov ecx,[esi+$18]
mov edx,$5f6620
mov edx,[edx]
mov edx,[edx]
mov eax,$006400BC
mov eax,[eax]
mov ebx,$0055c940
call ebx//购买物品CALL
mov esp,ebp
pop ebp
popad
end;
以上调用时,总是会弹出一个如第一张图所示的错误框,点确认,才显示购买药品成功.以上写得有哪儿不对或者考虑不周全,请路过的兄弟帮忙看看,提示一下即可.
此处能否不加入
push ebp; //保存原始EBP
mov ebp,esp; //原始ESP保存进EBP里
与
mov esp,ebp
pop ebp
popad
但测试时,如果不加堆栈平横的语句,购买物品不成功,请大家分析一下,为什么呢?
主要想弄明白原理,期待大家的回复,不管对错,主要是思路
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)