PE

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

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

PE

PE文件结构(四) 输出表

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

PE

PE文件结构(三) 输入表

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

PE

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

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

OllyDbg

OllyDbg 使用教程 (十九)

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

OllyDbg

OllyDbg 使用教程 (十八)

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

OllyDbg

OllyDbg 使用教程 (十七)

参考 书:《加密与解密》 视频:小甲鱼 解密系列 视频 破解这个程序的注册机(keygen) 这个程序主界面就是两个输入框,跟check,about按钮。 可以从两个输入栏入手,用OD加载程序,右键-->查找-->所以摸快间的调用,搜索跟输入框的API,可以搜索GetDlgItemTextA (也可以在Commod中输入 bp GetDlgItemTextA 即可直接对指定API ...

OllyDbg

OllyDbg 使用教程 (十六)

参考 书:《加密与解密》 视频:小甲鱼 解密系列 视频 此程序运行进行后有一个nag窗口,可以从这个nag窗口人手,用Resource Hacker这个软件查找这个nag的hInstance 图片1 图片2 可以知道这个nag窗口的hInstance为100(十进制),把程序加载到OD,搜索push 0x64 图片3 再所有push 0x64上下断点。运行程序,找到是产生nag窗口的那个ca ...