开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1824|回复: 0
收起左侧

[源码分享] C编程, 通过打开文件获取OEP

[复制链接]
结帖率:0% (0/3)
发表于 2011-8-4 18:12:25 | 显示全部楼层 |阅读模式   广西壮族自治区来宾市
  1. #include <stdio.h>

  2. #include <windows.h>

  3. //声明并开始定义获取OEP的函数

  4. bool myfindope(LPCSTR szFilename)

  5. {

  6. //申请一个句柄变量

  7. HANDLE hfile;

  8. ////调用CreateFile打开制定的文件,并把句柄返回给hfile变量,函数的具体参数说明请参阅MSDN

  9. if ((hfile = CreateFile(szFilename,GENERIC_READ,FILE_SHARE_READ,

  10. 0,OPEN_EXISTING,FILE_FLAG_SEQUENTIAL_SCAN,0)) == INVALID_HANDLE_VALUE)

  11. // 判断createfile函数的返回值,如果为INVALID_HANDLE_VALUE则输出打开文件失败,返回false!

  12. {

  13. printf("can not open this file\n");

  14. return false;

  15. }

  16. //申请 两个DWORD类型变量,

  17. DWORD dwOEP,cbRead;

  18. //申请一个IMAGE_DOS_HEADER 结构类型的变量imagedos

  19. IMAGE_DOS_HEADER imagedos;

  20. //从打开的文件句柄中读取文件的DOS头,错误则关闭句柄,返回false,输出提示

  21. if( !ReadFile(hfile,&imagedos,sizeof(IMAGE_DOS_HEADER),&cbRead,NULL))

  22. {

  23. printf("read image dos header failed\n");

  24. CloseHandle(hfile);

  25. return false;

  26. }

  27. //申请并初始化一个变量的值为IMAGE_OPTIONAL_HEADER结构了成员AdressofEntryPoint的RVA值

  28. int Entrypos = imagedos.e_lfanew + 40;

  29. //设置文件的当前读写位置为AdressofEntryPoint成员所在的位置;

  30. SetFilePointer(hfile,Entrypos,NULL,FILE_BEGIN);

  31. //读取AdressofEntrypoint的值,大小为4个字节,存入dwOEP变量中,失败则返回

  32. if (!ReadFile(hfile,&dwOEP,sizeof(dwOEP),&cbRead,NULL))

  33. {

  34. printf("read OEP failed\n");

  35. CloseHandle(hfile);

  36. return false;

  37. }

  38. //关闭文件句柄

  39. CloseHandle(hfile);

  40. //输出文件OEP值

  41. printf("The File OEP are 0x%x\n",dwOEP);

  42. return true;



  43. }

  44. void main()

  45. {

  46. LPCSTR filename; //申请一个字符串常量指针filename

  47. filename = "nimei.exe"; //初始化filename

  48. myfindope(filename); //调用写的函数

  49. system("pause");

  50. }
复制代码

本文只是获取未加壳文件的OEP信息,对加过壳的文件无效!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表