- UID
- 62930
注册时间2009-7-24
阅读权限20
最后登录1970-1-1
以武会友
TA的每日心情 | 开心 2024-12-6 17:12 |
---|
签到天数: 6 天 [LV.2]偶尔看看I
|
/*************************************************************************
* Copyright................
* 作 者 : 黄 奇
* 文件名: PEMacro.cpp
* 日 期 : 2009.7.25
* 功 能 : 找出程序的入口地址
* 描 述 :
* .........................
*
*************************************************************************/
#include <stdio.h>
/*****************************************************************************
* BASEADDRES : 基址(0x400000)
* D8: D8
* PEADDRESS: PE地址
* PE: PE标志
* ENTROY : 保存入口偏移地址
* ENTROYADDRESS : 入口地址
*****************************************************************************/
#define BASEADDRES ((int *)(0x400000))
#define D8 (*(BASEADDRES + 0xf))
#define PEADDRES (int *)((char *)BASEADDRES + D8)
#define PE (*PEADDRES)
#define ENTROY (PEADDRES + 0XA)
#define ENTROYADDRESS ((char *)BASEADDRES + *(ENTROY))
int main(void)
{
// 判断是不是PE
if (PE == 0x4550)
{
printf("程序入口地址是: %p\r\n", ENTROYADDRESS) ;
}
else
{
printf("ERROR! 找不到PE标志位!\r\n") ;
}
return 0 ;
}
#include <stdio.h>
#define BASE ((int *)0x400000)
int main(void)
{
int *p ;
/*************************************************************************
*
* *(BASE +0XF): 找到D8
* (char *)BASE + *(BASE + 0XF): 0x4000D8
* 0x4000D8: 存放PE标志
* (char *)BASE + *(BASE + 0XF) + 0x28: 找到偏移地址
* *(int *)((char *)BASE + *(BASE + 0XF) + 0X28): 取出偏移地址
* (char *)BASE + 偏移地址: 定位到偏移地址
* 最后转成int *
*
**************************************************************************/
p = (int *)((char *)BASE + *(int *)((char *)BASE + *(BASE + 0XF) + 0X28)) ;
printf("%p\r\n", p) ;
return 0 ;
} |
|