-
-
学SHELLCODE的一个代码小问题
-
2006-10-17 12:48
4329
-
// VC 6.0
// WIN XP
// a.c
#include <stdio.h>
#include <string.h>
static int k = 100;
unsigned char mycode[]={
0x55, //push ebp
0x8B, 0xEC, //mov ebp,esp
0x83, 0x2D, 0x18, 0x2D, 0x42, 0x00, 0x0A, //sub dword ptr [k (00422d18)],0Ah
0x8B, 0xE5, //mov esp,ebp
0x5D, //pop ebp
0xC3 //ret
};
typedef void(*aa)(void);
void __declspec(naked) test(void)
{
__asm
{
push EBP
mov EBP, ESP
sub k, 10
mov ESP, EBP
pop EBP
ret
}
}
void main(void)
{
test();
printf("-- %d\n", k);
((void(*)(void))&mycode)();
printf("-- %d\n", k);
}
// 第二行 printf("-- %d\n", k); 显示不是 80 ,为什么??????????????
你mycode里的k的地址是硬编码进去的
换了编译环境k的地址可能就改变了,导致mycode执行出错
这样说对吗?
[培训]《安卓高级研修班(网课)》月薪三万计划,掌
握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法