使用ida和OD逆向分析PE文件

查看 70|回复 5
作者:WineAndSong   
运行 CraMe1.exe,提示 "u r right!" 代表成功。首先修改 exe 使得出现成功提示,其次不修改 exe 输入正确的密码达到成功的目的。
(1)修改 exe
首先运行一下程序:


image.png (66.64 KB, 下载次数: 0)
下载附件
2023-3-16 12:05 上传

使用 OD 打开,使用插件查找字符串:


image.png (599.05 KB, 下载次数: 0)
下载附件
2023-3-16 12:06 上传

根据 u r right!这个字符串,定位到如下位置:


image.png (429.58 KB, 下载次数: 0)
下载附件
2023-3-16 12:06 上传

很明显,把 jnz 改成 jz 即可:


image.png (411.46 KB, 下载次数: 0)
下载附件
2023-3-16 12:07 上传

最后,右键-复制到可执行文件-右键-保存文件即可:


image.png (69.74 KB, 下载次数: 0)
下载附件
2023-3-16 12:07 上传

(2)不修改 exe
使用 ida 打开,搜索"u r right!"这个字符串:


image.png (61.7 KB, 下载次数: 0)
下载附件
2023-3-16 12:07 上传



image.png (120.68 KB, 下载次数: 0)
下载附件
2023-3-16 12:08 上传



image.png (304.87 KB, 下载次数: 0)
下载附件
2023-3-16 12:08 上传

定位到__cdecl main_0 这个函数,再使用 f5 反编译,得到如下结果:


image.png (85.26 KB, 下载次数: 0)
下载附件
2023-3-16 12:10 上传



image.png (102.61 KB, 下载次数: 0)
下载附件
2023-3-16 12:10 上传



image.png (13.21 KB, 下载次数: 0)
下载附件
2023-3-16 12:11 上传

从以上代码可以看出,要让 v9 不为 1 才能输出“u r right!”


image.png (23.93 KB, 下载次数: 0)
下载附件
2023-3-16 12:11 上传

v12 是我们输入的字符串,以上两个 if 语句,限定了 v12 的内容。
前 17 个字符是由 v10 数组作为下标,从 byte_415768 数组中取对应的字符得到,byte_415768 内容如下:


image.png (142 KB, 下载次数: 0)
下载附件
2023-3-16 12:12 上传

即“swfxc{gdv}fwfctslydRddoepsckaNDMSRITPNsmr1_=2cdsef66246087138”。
V10 数组内容如下:


image.png (45.32 KB, 下载次数: 0)
下载附件
2023-3-16 12:13 上传



image.png (15.61 KB, 下载次数: 0)
下载附件
2023-3-16 12:13 上传

v12 的后面几个字符由以下 if 语句决定:


image.png (13.13 KB, 下载次数: 0)
下载附件
2023-3-16 12:13 上传

即“1024}”。为了求出 v12,得到如下 python 程序:


image.png (32.06 KB, 下载次数: 0)
下载附件
2023-3-16 12:14 上传

运行结果如下:


image.png (69.38 KB, 下载次数: 0)
下载附件
2023-3-16 12:14 上传

在 exe 文件中,输入这串字符:wctf{Pe_cRackme1_1024}:


image.png (71.94 KB, 下载次数: 0)
下载附件
2023-3-16 12:15 上传

成功!

下载次数, 下载附件

S600   

好东西顶一下
dummersoul   

你放的ZIP 打不开,是不是debug 版本的
connoryan   

谢谢分享,才能让我们学习到东西
SnowRen   

VC 2010 生成的Debug版,没安装此开发套件的电脑是打不开文件的
YLBS   

感谢分享,顶一下
您需要登录后才可以回帖 登录 | 立即注册

返回顶部