说说windows 下的exe结构和编程语言以及和EXE文件相关的工具。
windows 下的exe的文件头有一个表格。叫EXE文件头结构。这个EXE DOS也有,不是通用的。32位和64位程序也不太通用。
看文件头有个学习软件叫stud_PE可以使用。
可以看EXE文件开头的结构。
EXE文件又分几个部分。有代码部分,有数据部分,还有资源部分,还有附加部分。
分别是:
.TEXT 代码部分,也有的软件是 .CODE
.DATA 数据部分。
.RSRC 资源部分。
其它的段结构都是附加部分,可以自己命名段名。
EXE程序的开始代码是编译程序自己加进来的。叫启动代码。
启动代码在DOS时代就有。
启动代码初始化程序的栈和堆。还有传入参数值,DOS和WINDOWS都一样。windows 保留了DOS下的传程序参数的习惯。
这启动代码在早期的Turbo C 2.0和 Turbo C++3.1编程软件中是以源码公开的。
windows 下的程序启动代码分几种方式,那链接器的 /MD /MT等带/Mx参数的,就是程序载入分类。
一个是静态挂windows 原有的系统库,一个是动态挂载windows的系统库。分共享使用和专门程序使用。动态共享库DLL是Windows 共享的。其它程序可用。
那LIB库是静态库,也有的LIB是动态转静态库,也就是程序函数完整模块,提供程序专门使用,外面程序看不见模块。
共享库在程序中的使用有导入库和导入函数段。是一个指针指向系统的模块。模块需要载入或系统已存在才行。
DLL库的函数是以导出函数接口的。DLL也有导入部分,可有可没有,导入的部分也要载入其它的DLL库,不然用不了。也就是嵌接库。
编程语言,的代码开始,每个开发编译器的公司的开头是不一样的,一般有些软件可以识别出编程方式。
我觉这个软件好用:
我以前是用的这个软件:
PEID和EXEinfo差不多,但是EXEinfo信息更全。都有附加功能,可以查文件字串,找加密和加壳类型。还可以挂脱壳插件。
我们可以用Imprect1.6这个软件看EXE程序的导入函数,可以修正和补丁这些函数。
为什么是1.42这个版本,因为这个高手修改过好用。很多做不了的事,这个版本可以做,是解密脱壳高手的宝贝。
再就是资源补丁软件,程序的资源是可以分离修改和更改界面的,也就是以前说的汉化过程。
这个资源工具可以汉化EXE文件的资源,用来汉化和修改界面。
就这几个软件已经可以覆盖执行文件相关的改动和操作了。专业点的,还可以用OllyDbg修改。
另外还有两个论坛提供给大家。