写程序取自己进程的AEP

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了写程序取自己进程的AEP相关的知识,希望对你有一定的参考价值。

测试程序功能 

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

技术分享

 

结合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的主要内容,如果未能解决你的问题,请参考以下文章

进程 子进程

写java程序自己是否不用管理内存了???

帮忙写一个C#例子:两个进程间通信的问题.

linux 进程会自己消失,请问是啥原因?

易语言如何查询指定进程ip,有源码写源码,不会不说话。

自己写了一个爬虫,求教如何在网页上爬取动态加载的信息。