怎样修改程序入口地址
修改程序入口地址方法
操作方法
- 01
extern "C" int __cdecl mainCRTStartup(void); //注意:若源文件是.c结尾的话,不需要这一句
- 02
__asm { MOV EAX, OFFSET main MOV BYTE PTR[EAX], 0xB8 //MOV EAX, 0x //mov MOV DWORD PTR[EAX+1], OFFSET SHOWSTRING //将printf语句地址放在eax+1处 MOV WORD PTR[EAX+5], 0xE0FF // JMP EAX:FFE0 }
- 03
#include "stdio.h" extern "C" int __cdecl mainCRTStartup(void); //注意:若源文件是.c结尾的话,不需要这一句 void print() { #pragma comment(linker, "/entry:print") #pragma comment(linker, "/SECTION:.text,ERW") #pragma comment(lib, "msvcrt.lib") int mainCRTStartup(); void main(); __asm { MOV EAX, OFFSET main MOV BYTE PTR[EAX], 0xB8 //MOV EAX, 0x //mov MOV DWORD PTR[EAX+1], OFFSET SHOWSTRING //将printf语句地址放在eax+1处 MOV WORD PTR[EAX+5], 0xE0FF // JMP EAX:FFE0 } mainCRTStartup(); // __asm // { // leave // ret // } SHOWSTRING: printf("hello,world!\n"); __asm { xor eax,eax ret } } void main() { }