初步分析
最终决战TForm1_Timer2Timer函数
![图片[1]-56.逆向破解分析实战23:160crackme之005(07):超详细破解指南-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/1930c563df824dfed133c57f5b40a38e8b6b8e152227b249f87ad123e3131da3921a0b86f5f0e3a7ae937cb01cc04710?pictype=scale&from=30013&version=3.3.3.3&fname=1%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
我们发现这个位置应该就是决定我们最终战胜这个程序的终极要义
分析 0x3E7
要求不等于 0x3E7,那么肯定是存在一个写入的代码,把这个值修改为了 0x3E7
查找常量 0x3E7 分析
发现在TForm1_Timer2Timer函数内进行比较
![图片[2]-56.逆向破解分析实战23:160crackme之005(07):超详细破解指南-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/be3ba72ee0ec464d1967d5260eb6da64bbad29898d3a7a78ce045eff45ef972272340e17b6caa386c3670471bfcd0618?pictype=scale&from=30013&version=3.3.3.3&fname=2.png&size=750)
然后在TForm1_Button1Click 函数内进行了赋值
![图片[3]-56.逆向破解分析实战23:160crackme之005(07):超详细破解指南-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/30cbab6f38146ebdba38a62c5b320f4fc8bbe90486e571a9adc67bb11341984686d2c28bc42f6e2cdd3e1d2fab26535a?pictype=scale&from=30013&version=3.3.3.3&fname=3%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
总结 0x3E7 校验
结合 DarkDe4 工具和上述代码分析,所谓的 Button1 就是这个注册按钮
一旦点击了注册按钮,就会被赋值为 0x3E7
所以得出结论:注册按钮是个坑,绝对不可以点击
![图片[4]-56.逆向破解分析实战23:160crackme之005(07):超详细破解指南-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/edefcc557aa783e5230b91d2fa6d7dbe8fc03a1672307c98a71558af78be9567f1161935e250e2213453467d1d17a0c8?pictype=scale&from=30013&version=3.3.3.3&fname=4%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
数组到偏移量的修复(重点)
我们发现反编译后,明明是偏移的形式,结果给我们反编译成了数组的形式,非常的不直观,影响我们观察常量,搜索常量
![图片[5]-56.逆向破解分析实战23:160crackme之005(07):超详细破解指南-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/1c72b23a226e1c639950b4dcf18b5c912b0aa608e71f8039ab44969a35b1c111851792e19937886a3a4acb767348cb15?pictype=scale&from=30013&version=3.3.3.3&fname=5%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
![图片[6]-56.逆向破解分析实战23:160crackme之005(07):超详细破解指南-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/0c171d9c9e816a044ff0811ab91d31b602abe9c0158f5b699f29c44fd46d74e12b67d8084e3f70e3f0e210dbb3bc2e66?pictype=scale&from=30013&version=3.3.3.3&fname=6%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
解决方案
解决方案还是有很多的,在这里讲一种比较好用省事不那么繁琐的方法
那么此时,分析的方向就变得清晰了起来,就是去研究 0x318 和 0x314 中的数据是如何校验的
![图片[7]-56.逆向破解分析实战23:160crackme之005(07):超详细破解指南-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/4f971e48aeff203487ba50edf92f207b472dd78fe67f5cfbffcd427d0a7d903ddaf1402432d83c14c72f34daa26b45e3?pictype=scale&from=30013&version=3.3.3.3&fname=15%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
当然了,插句嘴:如果汇编功底好,其实一眼就能看出就在比较 ebx + 0x318 以及 ebx+0x314 里面的数据,还用得着 F5 反编译?
确实用不到,在这里,仅当作如何解决反汇编异常的问题的范例
![图片[8]-56.逆向破解分析实战23:160crackme之005(07):超详细破解指南-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/cd4344904142ae13e8e807fcd18b91082b3f976715255a2eaca3983aff7313aff3342beadbff1c121f14bf7af65fc4db?pictype=scale&from=30013&version=3.3.3.3&fname=16%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
探寻 0x314
发现赋值有这么几处
- 初始化窗口界面的赋值 0xB
- 鼠标移动的赋值
0x41、0x3D、0x34、0xDF
![图片[9]-56.逆向破解分析实战23:160crackme之005(07):超详细破解指南-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/c2ccac6dfef19bc3979ab5a08171034d3506e3e5ab4ac8b11c6387bbd4b0e4d3af4176067131595ec291641aaa2c27db?pictype=scale&from=30013&version=3.3.3.3&fname=17.png&size=750)
重点看TForm1_FormMouseMove中的赋值,目前只能看出是不同的条件导致的赋值不同
暂时无法得出其他结论
![图片[10]-56.逆向破解分析实战23:160crackme之005(07):超详细破解指南-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/d8785eba1092f60bbbb47a1004bce883c18c47cf81e26829739674b6ab671dbd842acc28faf339f8d4b258bdfa67ff17?pictype=scale&from=30013&version=3.3.3.3&fname=18%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
探寻 0x318
我们发现几乎每一张图片都有关于 esi+0x318 的运算
![图片[11]-56.逆向破解分析实战23:160crackme之005(07):超详细破解指南-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/d8cba25535d09d8eabbcfe5a89059456e09168b6ab720ca5cebb00198a38e07d5836cb734b6226875a465c78810be1b6?pictype=scale&from=30013&version=3.3.3.3&fname=19%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
挨个看一下
函数TForm1_Image1MouseDown
![图片[12]-56.逆向破解分析实战23:160crackme之005(07):超详细破解指南-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/24002cb4ab50f3a1c02ce7994b4c9d49809378df3e8b0cfb67dd31f41f3c0a8baaa47c11d16089c41a5777319c584371?pictype=scale&from=30013&version=3.3.3.3&fname=20%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
![图片[13]-56.逆向破解分析实战23:160crackme之005(07):超详细破解指南-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/53b1827a1b50f4e648323301ef7d2cb29ee95fd4a55b5bd45a559cc1be2a7479b234d19d45d0b08b87aa146733ea9e8c?pictype=scale&from=30013&version=3.3.3.3&fname=21%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
通过下断分析得出:
- 当点击
人之初时,断下来,说明Image1 == 人之初 - 鼠标左键,
a3值为 0 。*(a1 + 0x318) += 2; - 鼠标右键,
a3值为 1 。*(a1 + 0x318) += 0x11
函数TForm1_Image2MouseDown
![图片[14]-56.逆向破解分析实战23:160crackme之005(07):超详细破解指南-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/fa3aec9171b270efd7e91da9b057a457b4dc6e90792dd4d0eb7a7506acf9e4c3a2a8c3be2d9b2673aff30e8a59434e01?pictype=scale&from=30013&version=3.3.3.3&fname=22%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
同理可得:
- 当点击
性本善时,断下来,说明Image2 == 性本善 - 鼠标左键,
a3值为 0 。*(a1 + 0x318) += 3; - 鼠标右键,
a3值为 1 。*(a1 + 0x318) += 0x13
函数TForm1_Image3MouseDown
![图片[15]-56.逆向破解分析实战23:160crackme之005(07):超详细破解指南-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/5045302918cbb43f8f9fc5a3b068251295c5c55ce8b40e6cc4edd2f202f4b7846a27927c9405965556480783f4b7c21a?pictype=scale&from=30013&version=3.3.3.3&fname=23%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
同理可得:
- 当点击
性相近时,断下来,说明Image3 == 性相近 - 鼠标左键,
a3值为 0 。*(a1 + 0x318) += 5; - 鼠标右键,
a3值为 1 。*(a1 + 0x318) += 0x17
函数TForm1_Image4MouseDown
![图片[16]-56.逆向破解分析实战23:160crackme之005(07):超详细破解指南-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/ab29d8e818e3ffaa28f42b6914c0ef50267a1251ca949398eec6977f3da1306d42f3f8481cc84901a5c333382aa2fd82?pictype=scale&from=30013&version=3.3.3.3&fname=24%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
同理可得:
- 当点击
习相远时,断下来,说明Image4 == 习相远 - 鼠标左键,
a3值为 0 。*(a1 + 0x318) += 7; - 鼠标右键,
a3值为 1 。*(a1 + 0x318) += 0x1B
总结 0x314 与 0x318 线索
1.开天辟地
在窗口创建之初,偏移 0x318 中的数据为 0
当我们点击图片的时候,值就会进行加法运算
![图片[17]-56.逆向破解分析实战23:160crackme之005(07):超详细破解指南-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/4cddb5e044d63b63c778ee17673d8f8552ab0091d770405f8d0659193cfaed0f6a4da757cb0e300862c67daed10034a0?pictype=scale&from=30013&version=3.3.3.3&fname=25%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
2.移形换位
当鼠标移动函数TForm1_FormMouseMove中的所有校验绕过之后
会根据不同的条件进行赋值,值的核心源头直指 a1 + 0x30C
![图片[18]-56.逆向破解分析实战23:160crackme之005(07):超详细破解指南-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/b8cba9743273efa8507f801708b67f50957d410eb884e4196c577fdbaabbc9707cc0cc92637394fb4848ac2f3e8ba135?pictype=scale&from=30013&version=3.3.3.3&fname=26%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
![图片[19]-56.逆向破解分析实战23:160crackme之005(07):超详细破解指南-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/d8785eba1092f60bbbb47a1004bce883c18c47cf81e26829739674b6ab671dbd842acc28faf339f8d4b258bdfa67ff17?pictype=scale&from=30013&version=3.3.3.3&fname=27%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
3.追本溯源
a1+0x30C实则是TForm1_Edit2DblClick中的代码
![图片[20]-56.逆向破解分析实战23:160crackme之005(07):超详细破解指南-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/a0e1d66ad8ff6746ab1dbd18f97fa5061ee1e3a17a1098acacd1c887fec89f1cb4c16fdcdeec4062ab68a72539ef0a32?pictype=scale&from=30013&version=3.3.3.3&fname=28%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
4.最终比较
![图片[21]-56.逆向破解分析实战23:160crackme之005(07):超详细破解指南-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/cd4344904142ae13e8e807fcd18b91082b3f976715255a2eaca3983aff7313aff3342beadbff1c121f14bf7af65fc4db?pictype=scale&from=30013&version=3.3.3.3&fname=29%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
5.绕过校验
我们用 dbg 在这个地址004471A7下断,查看一下已经赋值完毕的 ebx+0x314 的值
![图片[22]-56.逆向破解分析实战23:160crackme之005(07):超详细破解指南-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/b6fc682bdb7a6ec8a13f52da8f540669bde2fb0ed9f0ac8b15a953d64a9019bdd31b6d9c44abfd471f4ae0d36813b42f?pictype=scale&from=30013&version=3.3.3.3&fname=30%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
首先绕过前面的校验,然后鼠标划入,发现被赋值的值为 0x3D == 61
![图片[23]-56.逆向破解分析实战23:160crackme之005(07):超详细破解指南-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/b0854cb2ab57350c4c89809c130bb6278d44c0e45a008e6359510ef9f1f32b5ddbf8c30e6641e7dbf0e06ebfd461a221?pictype=scale&from=30013&version=3.3.3.3&fname=31%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
那么这个时候其实就是凑数了
图片 1:人之初
- 鼠标左键,
7 - 鼠标右键,
21
图片 2:性本善
- 鼠标左键,
3 - 鼠标右键,
19
图片 3:性相近
- 鼠标左键,
5 - 鼠标右键,
23
图片 4:习相远
- 鼠标左键,
7 - 鼠标右键,
27
那么我们可以随便找一个,总之结果要等于 61
27 * 2 = 54 + 7 = 61
所以我们可以习相远右键 2 次,左键一次
破解成功
![图片[24]-56.逆向破解分析实战23:160crackme之005(07):超详细破解指南-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/a58d21b45f74947f5fcafc109925bcb318416c072bc077f0c5cc83585bff5234c7675930b63cb7691ccd2301ae89ceef?pictype=scale&from=30013&version=3.3.3.3&fname=32%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
总结破解逻辑
1.鼠标右键点击按钮5 次–>满足 0x29D 的要求
2.双击 Panel1框,解除 Edit2 的禁用状态
3.编辑框输入 ajj,密码框可以输入 1_345,78
4. 双击 Edit2 编辑框 –> 满足*(a1 + 0x30C) != 9
5. 观察性相近图片出现,出现时鼠标从右下角划入
6.观察性本善图片 Image2 出现,出现时鼠标从左下角划入
7.观察习相远右键 2 次,左键 1 次
番外工作
关于这里的 0x30C 偏移位置的运算,还有待分析
![图片[25]-56.逆向破解分析实战23:160crackme之005(07):超详细破解指南-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/af5c0b5ef70e4fc2a02ea62b4de4c9bdab89a3477e34f131997df59a782ad7da616b05be3db7fe008c5dcaf77f775201?pictype=scale&from=30013&version=3.3.3.3&fname=33.png&size=750)
以及这里凭什么显示的是 1,而不是别的
具体细节,且听下回分晓
![图片[26]-56.逆向破解分析实战23:160crackme之005(07):超详细破解指南-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/f47924cc1d2baea60c301dfeac9a3dbd1619af9f77a1f82c035c0ba4053298f41b9ac9ff3fee3e5ed1f6a4be625ea768?pictype=scale&from=30013&version=3.3.3.3&fname=34.png&size=750)






没有回复内容