随便先输入了一组用户名和密码,弹出了提示窗口,接下来我们可以用OD打开010, 来查找这个字符串
a. 这样我们打开vs执行上面的代码可以得到符合密码验证规则的一个秘钥
b. 但是这样输进去之后,我们依旧是不通过的,like this
3.1 继续单步F8往下跟,不远处会有一个跳转,跳转之后开始了第二轮的验证
a. 通过对上面这块代码的分析我们知道了,用户名是和K[4] ~ K[7]有一定的对应关系的
a. 如果K[3] = 9C的话, 密码只需要8个字节就可以了.
b. 我们通过上面的代码已经知道了, K[0] ~ K[7]怎么样才可以通过第一轮的验证.
c. 通过分析我们得知K[4] = sub_1062f86返回值的最后一个字节, K[5] = 倒数第二个字节, K[6], K[7]以此类推.
d. 然后我们发现通过上面的对应关系我们只要求出来了用户名的值, 就已经得到了K[4] ~ K[7]的值.
e. 然后我们需要思考, 怎么才能得到程序中传入用户名求出的值.
5.5. 然后Ctrl+A全选>复制,将之作为一个函数粘贴到我们之前的代码里面
5.6.这样我们就完成了, 我们注册机代码的编写
6.1. 对于网络校验来说, 有两个方法可以过掉
a. 自己搭建服务器, 分析它发送和接收的的数据包
b. 修改文件使网络验证失效
6.2. 在这里我们选用第二种方法, 来绕过它的网络验证
a. 在修改exe文件之前, 我们先用010把它的重定位去除掉, 位置: NtHeader > FileHeader > Characteristics > FILE_RELOCS_STRIPPED字段
6.3. 然后我们开始修改汇编代码
a. 经过分析我们发现这里有两处验证的函数, 需要分别修改一下
b. F7进去修改, 修改过后过后保存一下
6.4. 接下来我们继续修改后面一处验证
a. 这个地方eax返回1就可以通过这个验证, 像刚才一样我们把这里也修改保存下来
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2019-3-1 19:59
被从黎明到衰落编辑
,原因: