-
-
第一阶段第一题
-
发表于:
2010-10-18 16:37
4333
-
if ( dwFileSize <= 0x84 )
memcpy(&down, paddress, dwFileSize);
((void (__thiscall *)(int (***)()))*msgbox)(&msgbox);
(*(void (__thiscall **)(int *))sleep_1)(&sleep_1);
此处的memcpy会将msgbox这个指针的值给覆盖了。覆盖的恰恰是最后4哥字节
将这个值覆盖成读入文件内容在栈中的大概位置,
文件内容头部的值弄成shellcode开始的几个nop在栈中的大概位置
就可以执行到shellcode
mov ebx,esp保存esp
pus 0xxxxxx建立字符串
dword_408514 = (int)GetProcAddress(v6, "MessageBoxA");
在这里找MessageBoxA
mov esp,ebx
ret返回
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!