PE

PE文件结构(一) 基本结构

2015-05-07

参考 书:《加密与解密》 视频:小甲鱼 解密系列 视频 exe,dll都是PE(Portable Execute)文件结构。PE文件使用的是一个平面地址空间,所有代码和数据都被合并在一起,组成一个很大的结构。先看2张图,来大概了解一下PE文件结构。 PE文件的框架结构 通过这张图(开始在下面),我们可以知道PE文件的大概结构,PE文件是由 DOS头,PE文件头,块表,块,调试信息 这些部分组 ...

OllyDbg

OllyDbg 使用教程 (一)

2015-05-06

参考 书:《加密与解密》 视频:小甲鱼 解密系列 视频 、OllyDbg基本界面 图片1 如果按窗口切换按钮出现下面的情况,乱了,只需要双击一个窗口让它全屏就行了。 图片2 二、部分快捷键介绍 F3 : 打开目标文件 F2 : 设置断点 F7:单步步进,遇到CALL跟进 F8:单步步过,遇到CALL路过,不跟进 F9:运行调试程序,直到运行到断点处 F4:运行调试程序,直到运行到光标处 Ct ...

PE

PE文件结构(五)基址重定位

2015-05-07

参考 书:《加密与解密》 视频:小甲鱼 解密系列 视频 基址重定位 链接器生成一个PE文件时,它会假设程序被装入时使用的默认ImageBase基地址(VC默认exe基地址00400000h,dll基地址10000000h),并且会把代码中所有指令中用到的地址都使用默认的基地址(例如 程序代码中 push 10001000,就是把10000000h当做了基地址,把push 10001000写入 ...

PE

PE文件结构(四) 输出表

2015-05-07

参考 书:《加密与解密》 视频:小甲鱼 解密系列 视频 输出表 一般来说输出表存在于dll中。输出表提供了 文件中函数的名字跟这些函数的地址, PE装载器通过输出表来修改IAT。 IMAGE_OPTIONAL_HEADER中的 DataDirectory[0] 提供了输出表的RVA。输出表是以一个IMAGE_EXPORT_DIRECTORY结构 开始的。 IMAGE_EXPORT_DIREC ...

PE

PE文件结构(三) 输入表

2015-05-07

参考 书:《加密与解密》 视频:小甲鱼 解密系列 视频 输入表 输入函数,表示被程序调用但是它的代码不在程序代码中的,而在dll中的函数。对于这些函数,磁盘上的可执行文件只是保留相关的函数信息,如函数名,dll文件名等。在程序运行前,程序是没有保存这些函数在内存中的地址。当程序运行起来时,windows加载器会把相关的dll装入内存,并且将输入函数的指令与函数真在内存中正的地址联系起来。输入 ...

PE

PE文件结构(二) 区块,文件偏移与RVA转换

2015-05-07

参考 书:《加密与解密》 视频:小甲鱼 解密系列 视频 区块 在区块表 后面的就是一个一个区块,每个区块占用对齐值的整数倍,一般的文件都有代码块 跟 数据块( 它们的名字一般为.text 跟 .data 但这是可以修改的)。每个区块的数据具有相同的属性。编译器先在obj中生成不同的区块, 链接器再按照一定的规则合并不同obj跟库中的快。例如每个obj中肯定有.text 块, 连接器就会把它们 ...

OllyDbg

OllyDbg 使用教程 (十九)

2015-05-07

参考 书:《加密与解密》 视频:小甲鱼 解密系列 视频 反调试 先看看这四个程序。(下载地址:http://pan.baidu.com/s/1pJCzABp) 它们自己运行时都没有问题,都显示被注册信息 “You really did it! Congratz it",但是一到OD中运行就会出现未注册或者报错。 这四个程序都对OD进行了反调试。 它们都用了IsDebuggerPr ...

OllyDbg

OllyDbg 使用教程 (十八)

2015-05-07

参考 书:《加密与解密》 视频:小甲鱼 解密系列 视频 这次这个程序跟原来的程序不一样,它会对自身的代码进行加密解密。 程序运行前有一个nag窗口,破解目标去除这个nag窗口。 图片1 OD加载这个程序,搜索nag窗口的文字。可以找到: 图片2 但是在此处下断点后,重新运行程序,发现程序没有在下断点的地方停下来。分析可以知道,这个程序有些狡诈,我们搜到的那个貌似产生nag窗口的代码可能是用来 ...