(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 上传
成功!