码迷,mamicode.com
首页 > 系统相关 > 详细

写程序取自己进程的AEP

时间:2016-02-12 22:12:32      阅读:315      评论:0      收藏:0      [点我收藏+]

标签:

测试程序功能 

打印出自己进程的程序入口点地址.

技术分享

 

结合OD载入程序,看到的入口点确实是0x004014f0, 说明程序入口点找到了

技术分享

测试程序

 

[cpp] view plain copy
 
  1. /// @file exam_1_1.c  
  2.   
  3. #include <stdlib.h>  
  4. #include <stdio.h>  
  5.   
  6. void fnGetProgEntry();  
  7.   
  8. int main(int agrc, char** argv)  
  9. {  
  10.     fnGetProgEntry();  
  11.   
  12.     printf("END, press any key to quit\n");  
  13.     getchar();  
  14.     return 0;  
  15. }  
  16.   
  17. void fnGetProgEntry()  
  18. {  
  19.     #define PE_SIGNTURE 0x4550 ///< "PE"  
  20.   
  21.     int* pFileAddressOfNewHeader = NULL;  
  22.     int* pCOFFFileHeader = NULL;  
  23.     int* pAEP = NULL;  
  24.     const int iAddrPeImgBase = 0x400000;  
  25.   
  26.     /// iOffsetX 为偏移  
  27.     /// iContent 为地址中的内容  
  28.     const int iOffsetFileAddressOfNewHeader = (16 * 4 - 4); ///< File address of new header 相对于DosHeader的偏移  
  29.     const int iOffsetAEPToFileAddressOfNewHeader = 0x28;  
  30.   
  31.     int iContentFileAddressOfNewHeader = 0;   
  32.     int iPeSignature = 0;  
  33.     int iOffsetAddressOfEntryPoint = 0; ///< 程序入口点偏移地址  
  34.       
  35.     do   
  36.     {  
  37.         pFileAddressOfNewHeader = (int*)(iAddrPeImgBase + iOffsetFileAddressOfNewHeader);  
  38.         iContentFileAddressOfNewHeader = *pFileAddressOfNewHeader; ///< iContentFileAddressOfNewHeader = 0xd0  
  39.   
  40.         pCOFFFileHeader = (int*)(iAddrPeImgBase + iContentFileAddressOfNewHeader);  
  41.         iPeSignature = *pCOFFFileHeader;  
  42.         if (PE_SIGNTURE != iPeSignature)  
  43.         {  
  44.             printf("error pe file\n");  
  45.         }  
  46.   
  47.         pAEP = (int*)((int)pCOFFFileHeader + iOffsetAEPToFileAddressOfNewHeader);  
  48.         iOffsetAddressOfEntryPoint = iAddrPeImgBase + *pAEP;  
  49.         printf("my address entry point is 0x%x\n", iOffsetAddressOfEntryPoint);  
  50.     } while (0);  
  51.   
  52.     printf("END, press any key to quit\n");  
  53. }  

 

运行结果

 

技术分享

http://blog.csdn.net/lostspeed/article/details/49506193

写程序取自己进程的AEP

标签:

原文地址:http://www.cnblogs.com/findumars/p/5187279.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!