今天做了一个读取PE文件导出表的小程序,用来学习. 参考了<Windows PE权威指南>一书. 首先, PE文件的全称是Portable Executable,可移植的可执行的文件,常见的EXE.DLL.OCX.SYS.COM都是PE文件. 我们知道,一个Windows程序,它所实现的所有功能最终几乎都是调用系统DLL提供的API函数.要使用任何一个DLL所提供的函数,我们需要将它导入,也就是用到了导入表.然而对于那些提供了被导出的函数的DLL程序来说,他们必须使用导出表将函数导出,之后别的…
合肥程序员群:49313181.    合肥实名程序员群 :128131462 (不愿透露姓名和信息者勿加入)Q  Q:408365330     E-Mail:egojit@qq.com PE文件结构综览: 首先上图片: 看到上面的图片可以清晰的看到PE结构复杂结构式什么样子的.有DOS首部,PE头部,PE节表,很多的表块,最后就是一些调试信息. DOS头由DOS 'MZ' HEADER 和DOS stub组成,DOS "MZ"头中的MZ是PE文件的一个标志之一.后期我们在写PE小工…
由于工作需要在詹金斯(genkins)集成环境打包,打包避免不了需要修改版本号,写入版本号最简单的方式通过修改windows rc文件 这就意味着,每次构建新版本前需要修改一次源文件 这个在用詹金斯集成环境打包是不太友好的 因为版本号是由詹金斯自动生成拼接传入的,而打包环境意味着代码已经封闭了不在修改了如果去改的话 就会存在一定的风险.这就需要在编译完成后通过其它工具用命令行方式修改版本号,经网上查找资料发现 ResHacker可以修改版本号,但是资料更多的是关于GUI方式,很少有命令行方式的资…
合肥程序员群:49313181.    合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q  Q:408365330     E-Mail:egojit@qq.com 最近比较忙,只能抽节假日去学习和记录自己的学习,这一节我记录自己学习PE头的学习.在这里给大家介绍一本很好的学习PE的书:Windows PE权威指南.上一节我们一起学习DOS头.DOS头很多内容在16位DOS系统下面才会用到.在现在的Win32系统中,这些事冗余. 因此我们关注更多的是PE头而非DOS头.首…
合肥程序员群:49313181.    合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q  Q:408365330     E-Mail:egojit@qq.com 综述: 首先说明我也只是PE文件的初学者,我所写的都是自己的学习记录.前3节学习了PE的一些结构,其中包括DOS头和PE头部分.总是这样去学习这些机构和理论的分析我想大家和我一样毫无兴趣,提不起精神.所以我尝试着在自己对PE了解的基础上用C++写一个小程序分析PE结构文件.我所接触的教程都是Win32汇编去实…
合肥程序员群:49313181.    合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入)Q  Q:408365330     E-Mail:egojit@qq.com PE概述: 在从写程序开始就知道exe后缀名.当然不是程序员,看到*.exe这样的都知道是window下的可执行文件.当时有多少人深入去想过这是什么呢??为什么直接双击就会运行??当然站在程序员角度,.exe这个后缀名其实也只是文件,从本质上讲它和.doc文件没什么区别,都是文件.这个就是被称为PE文件的特殊文…
大致结构 DOS头和NT头之间通常还有个DOS Stub DOS头 DOS头的作用是兼容MS-DOS操作系统中的可执行文件 一般没啥用 记录着PE头的位置 DOS头定义部分 typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header WORD e_magic; // Magic number WORD e_cblp; // Bytes on last page of file WORD e_cp; // Pages in file WORD e_c…
转自:evil.eagle https://blog.csdn.net/evileagle/article/details/12176797 导出表是用来描述模块中的导出函数的结构,如果一个模块导出了函数,那么这个函数会被记录在导出表中,这样通过GetProcAddress函数就能动态获取到函数的地址. 函数导出的方式有两种,一种是按名字导出,一种是按序号导出.这两种导出方式在导出表中的描述方式也不相同. typedef struct _IMAGE_EXPORT_DIRECTORY { DWOR…
首先,今天发现了一个很牛逼的教程网站:慕课网(http://www.imooc.com/).有很多大牛发布的教学视频.值得收藏.学习. 今天主要参照陈启超老大的视频,学习了多个Activity之间的切换.工程中添加了多个Activity之后,最重要的还是要相应的修改AndroidManifest.xml文件. (1)注册新加的Activity (2)指定首先创建的Activity 连续两晚的学习都涉及到了AndroidManifest.xml,这次就仔细的学习下. 借鉴: http://mobi…
导出表: typedef struct _IMAGE_EXPORT_DIRECTORY { DWORD Characteristics; // 未使用,总为0 DWORD TimeDateStamp; // 文件创建时间戳 WORD MajorVersion; // 未使用,总为0 WORD MinorVersion; // 未使用,总为0 DWORD Name; // **重要 指向一个代表此 DLL名字的 ASCII字符串的 RVA DWORD Base; // **重要 函数的起始序号 D…