无瑕黑心肠 发表于 2016-5-30 22:59

"半"字节破解eXeScope

本帖最后由 无瑕黑心肠 于 2016-5-31 00:44 编辑

前言:
   闲来没事的翻翻以前破解的软件, 无意中看到了eXeScope, 心里回想初学破解的时候, 找爆破点找了很久, 而且还有重启验证机制的, 找了一下午才搞定注册的, 而且软件重启又得注册一次, 现在想想都觉得好笑.


进入正题:
   载入软件搜索字符串能够发现"两"处关键字:
   
   双击进去"已注册"的地方能找到关键的跳转:
   
   je 改 jnz 或 nop 都能实现"已注册"的效果, 但是软件存在重启验证机制, 这样做, 每次打开软件都得注册一次(除非你不觉得麻烦)
   
   如果双击"无效的 ID 或名字"进去会发现一个上面跳下来的跳转:
   
   
   je 改 jnz 或 nop 就能实现输入"任何字符"都被成功注册, 如果心细的朋友肯定会发现第二张图比较的部分有这么两句指令:
   mov eax,dword ptr ds:
   cmp byte ptr ds:,0x0
   其中的就是软件的"已注册"标志, 如果再心细一点就会发现"无效的 ID 或名字"上面几行会有这个两句代码:
   
   没错, 就是"已注册"的赋值点, 但是这个点在"注册窗口"里面是点击了"确定"并且 je 改成 jnz 它才会走到这一步的, 重点来了:
      如何找到程序启动时的第一个赋值点?
   我的思路是这样的:
      1.右键该"mov eax,dword ptr ds:"代码, 查找参考 -> 地址常量, 然而结果是找不到的, 如果朋友再心细一点会发现这两句指令有问题, 请看:
   
   mov eax,dword ptr ds:   // 将地址""里面的值(注意是里面, 而不是这个地址)赋值给eax
   cmp byte ptr ds:,0x0         // 将""里面的值(注意是里面, 而不是这个地址)取出来于0进行比较
   有没有发现这样做很多余? 地址里面的值取出来再取出这个里面的值去比较(好绕...), 明显多余(其实这个是我调试蛮久查来的), 里面值储存的地址是固定的, 所谓""的值也就是"4CFB08".
   知道这些"有力"条件后直接右键 -> 查找 -> 所有常量, 我们就能看到程序启动的赋值点:
   
   mov byte ptr ds:,al   // 将EAX的低四位赋值给""
   双击进去我们可以看到上面是一个关键CALL, 没错, 这个就是算法CALL, 想追注册码的可以到这里面:
   
   进入里面经过我的仔细琢磨发现只要将下面这一句:
   
   代码 004CBF9A      33DB          xor ebx,ebx
   改成 004CBF9A      03DB          add ebx,ebx
   程序就被完美爆破了(真的只要"半"字节哟). 想知道具体原因的朋友可以在这里下断, 然后跟下去, 就能发现最后 ebx 赋值给 eax , eax 的 al 赋值给"", 爆破到此 OVER.


总结:
   这期教会我们多留点心眼就能发现程序深藏的细节, 注重细节成就自我. 哪怕是破解复杂的软件也如此, 寄存器、堆栈、数据、调用堆栈等等..., 每天都在进步, 每天都在努力向前, 吾友你们呢?
   好了, 帖子到此就告一段落了, 感谢吾友耐心观看到此, 也感谢你们的的热心. 也祝你(妳)们在破解的道路上不断向前, 突破自我!

冥界3大法王 发表于 2017-1-10 11:58

004CBF9A|.33DB          XOR   EBX,EBX
004CBF9C|.8B45 FC       MOV   EAX,
004CBF9F|.E8 AC8CF3FF   CALL    eXeScope.00404C50
004CBFA4|.83F8 0A       CMP   EAX,0xA
004CBFA7|.75 5C         JNZ   SHORT eXeScope.004CC005
004CBFA9|.8B55 FC       MOV   EDX,
004CBFAC|.B8 30C04C00   MOV   EAX,eXeScope.004CC030            ;A1910
004CBFB1|.E8 DE8FF3FF   CALL    eXeScope.00404F94
004CBFB6|.48            DEC   EAX
004CBFB7|.74 10         JE      SHORT eXeScope.004CBFC9
004CBFB9|.8B55 FC       MOV   EDX,
004CBFBC|.B8 40C04C00   MOV   EAX,eXeScope.004CC040            ;A1423   注册码


或修改成 004CBF9A      08C0          OR      AL,AL

红客鄙哥 发表于 2016-5-30 23:07

xiaorui 发表于 2016-5-30 23:14

非常感谢楼主的教学,很实用,非常感谢。

kuwo911 发表于 2016-5-30 23:51

讲解很细,非常赞!

yangqyloki 发表于 2016-5-31 00:02

很强大,受教了~!

梦虫 发表于 2016-5-31 00:14

学习学习。。

我非良人 发表于 2016-5-31 00:27

学习一下,感谢楼主的教学

hxg1189 发表于 2016-5-31 06:49

佩服佩服!

hu007 发表于 2016-5-31 07:57

谢谢分享,学习了

梦入神机 发表于 2016-5-31 08:11

谢谢楼主教学,小白还是没看懂
页: [1] 2 3
查看完整版本: "半"字节破解eXeScope