初步分析
最终决战TForm1_Timer2Timer
函数
我们发现这个位置应该就是决定我们最终战胜这个程序的终极要义
分析 0x3E7
要求不等于 0x3E7
,那么肯定是存在一个写入的代码,把这个值修改为了 0x3E7
查找常量 0x3E7
分析
发现在TForm1_Timer2Timer
函数内进行比较
然后在TForm1_Button1Click
函数内进行了赋值
总结 0x3E7 校验
结合 DarkDe4
工具和上述代码分析,所谓的 Button1
就是这个注册
按钮
一旦点击了注册按钮,就会被赋值为 0x3E7
所以得出结论:注册按钮是个坑,绝对不可以点击
数组到偏移量的修复(重点)
我们发现反编译后,明明是偏移
的形式,结果给我们反编译成了数组
的形式,非常的不直观,影响我们观察常量,搜索常量
解决方案
解决方案还是有很多的,在这里讲一种比较好用省事不那么繁琐的方法
那么此时,分析的方向就变得清晰了起来,就是去研究 0x318
和 0x314
中的数据是如何校验的
当然了,插句嘴:如果汇编功底好,其实一眼就能看出就在比较 ebx + 0x318
以及 ebx+0x314
里面的数据,还用得着 F5 反编译?
确实用不到,在这里,仅当作如何解决反汇编异常的问题的范例
探寻 0x314
发现赋值有这么几处
- 初始化窗口界面的赋值 0xB
- 鼠标移动的赋值
0x41
、0x3D
、0x34
、0xDF
重点看TForm1_FormMouseMove
中的赋值,目前只能看出是不同的条件导致的赋值不同
暂时无法得出其他结论
探寻 0x318
我们发现几乎每一张图片都有关于 esi+0x318
的运算
挨个看一下
函数TForm1_Image1MouseDown
通过下断分析得出:
- 当点击
人之初
时,断下来,说明Image1 == 人之初
- 鼠标左键,
a3
值为 0 。*(a1 + 0x318) += 2;
- 鼠标右键,
a3
值为 1 。*(a1 + 0x318) += 0x11
函数TForm1_Image2MouseDown
同理可得:
- 当点击
性本善
时,断下来,说明Image2 == 性本善
- 鼠标左键,
a3
值为 0 。*(a1 + 0x318) += 3;
- 鼠标右键,
a3
值为 1 。*(a1 + 0x318) += 0x13
函数TForm1_Image3MouseDown
同理可得:
- 当点击
性相近
时,断下来,说明Image3 == 性相近
- 鼠标左键,
a3
值为 0 。*(a1 + 0x318) += 5;
- 鼠标右键,
a3
值为 1 。*(a1 + 0x318) += 0x17
函数TForm1_Image4MouseDown
同理可得:
- 当点击
习相远
时,断下来,说明Image4 == 习相远
- 鼠标左键,
a3
值为 0 。*(a1 + 0x318) += 7;
- 鼠标右键,
a3
值为 1 。*(a1 + 0x318) += 0x1B
总结 0x314
与 0x318
线索
1.开天辟地
在窗口创建之初,偏移 0x318
中的数据为 0
当我们点击图片
的时候,值就会进行加法运算
2.移形换位
当鼠标移动函数TForm1_FormMouseMove
中的所有校验绕过之后
会根据不同的条件进行赋值,值的核心源头直指 a1 + 0x30C
3.追本溯源
a1+0x30C
实则是TForm1_Edit2DblClick
中的代码
4.最终比较
5.绕过校验
我们用 dbg 在这个地址004471A7
下断,查看一下已经赋值完毕的 ebx+0x314
的值
首先绕过前面的校验,然后鼠标划入,发现被赋值的值为 0x3D
== 61
那么这个时候其实就是凑数了
图片 1:人之初
- 鼠标左键,
7
- 鼠标右键,
21
图片 2:性本善
- 鼠标左键,
3
- 鼠标右键,
19
图片 3:性相近
- 鼠标左键,
5
- 鼠标右键,
23
图片 4:习相远
- 鼠标左键,
7
- 鼠标右键,
27
那么我们可以随便找一个,总之结果要等于 61
27 * 2
= 54 + 7
= 61
所以我们可以习相远
右键 2 次
,左键一次
破解成功
总结破解逻辑
1.鼠标右键点击按钮
5 次
–>满足 0x29D
的要求
2.双击 Panel1框
,解除 Edit2
的禁用状态
3.编辑框输入 ajj
,密码框可以输入 1_345,78
4. 双击 Edit2
编辑框 –> 满足*(a1 + 0x30C) != 9
5. 观察性相近
图片出现,出现时鼠标从右下角划入
6.观察性本善
图片 Image2
出现,出现时鼠标从左下角划入
7.观察习相远
右键 2 次
,左键 1 次
番外工作
关于这里的 0x30C
偏移位置的运算,还有待分析
以及这里凭什么显示的是 1,而不是别的
具体细节,且听下回分晓
没有回复内容