怎样修改程序入口地址

2025-10-03 00:22:41

1、extern "C" int __cdecl mainCRTStartup(void);  //注意:若源文件是.c结尾的话,不需要这一句

2、 __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

}

3、#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()

{

}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢