偶然一天网上冲浪,发现一款软件,秉承着学习的态度,我再次下载下来
还是老样子,先打开PEID进行查壳
没加壳,那我们就正常打开,看下具体什么情况
看来不是先出现登录界面了,是直接嵌入到软件内了
接下来就该寻找我们的下手点了
直接点击开始
直接闪退!!什么回显也没有
用debug虫子修复载入
ok,实锤是用易语言做的软件
可以考虑用按钮断点进行下一步的破解
那我直接载入到xdbg中 先F9运行一下,让他到程序领空后
ctrl+b 搜索 FF55FC(易语言的按钮call)
ok,双击跳转过去
直接F2下断点,然后F9运行
发现程序直接闪退(并没有断在这个位置)!
那我们只好用虫子修复提供给我们的按钮断点了....
ctrl+g 输入 4C0F7D
跳转过去后F2下断点,然后运行
但是,这个作者显然想到了这个方法,所以应该是在按钮位置加了反调试,导致我们还没有人为的点击按钮,程序就断下了
那我们就直接右键,查找字符串
看能不能得到一些有用的东西
我们发现了“密码被禁用”的字符,按照逻辑来说,他应该需要先去验证密码,再去判断是密码错误,还是密码不错在,还是密码被禁用
所以我们直接双击过去
验证的位置肯定是在出现结果的上面,所以我们就直接往上面找,看有没有什么大跳转
大跳转并没有找到,但是在上方我们发现了这种字样的字符串,这种很显然是在和服务器核对密码的发包操作,看来验证的位置就在附近,所以我们直接在发包上面的小跳转下断点(肯定需要先发包验证,在收包操作,所以验证大概率会在这个下面)
我们直接在这个小跳转上下一个小断点,看一下他发包后的操作
F9运行,点击开始,直接断在这个位置了
我们F8往下一步一步的找
当我们路过这个call的时候,出现提示了
那么八成没跑了,验证call的位置就在这里面,在这个call的后面加上注释,并在该位置下断点,
下次载入直接运行到该位置
我们重新载入一下(因为该软件验证失败会直接闪退)
运行到该位置,我们直接F7进入到这个call里面去看
刚进来运行到这个call就出现了密码不正确,那我们尝试把这个位置直接nop掉(在当前位置右键---二进制---用nop填充)
然后右键---补丁--修补文件
保存到同一目录下,然后打开软件,看能否正常运行
软件并没有闪退,模拟器也自动打开!
破解成功(如果修补完文件后,软件无法正常运行,那就是nop的位置不对,也就是找到的验证位置不正确,需要进一步的去寻找关键call)
该软件还是比较简单的验证,所以想到了出一个这个教程