打开程序,提示是未购买用户
随便输入一个用户名和注册码
点击确定后会自动退出程序,实际上它记录了之前输入的用户名和注册码,再次打开程序时会进行验证
因为输的是无效的,所以再次打开还是未购买用户
将程序载入OD,F9 运行起来
点击箭头指向的箭头或摁快捷键 ctrl+G 输入“401000”确定
疑问:这里的401000是程序的入口?为什么要先把程序运行起来?
跳转后有的不是这个界面是这样的,右键>分析>从模块中删除分析
疑问:这里我看的那个教程说的很模糊,说上面那样是“已经脱离了壳了” 是什么意思?
智能搜索
。。。。。。。。。。。。。。。。。。。。。。。后面没有疑问了。。。。。。。。。。。。。。。。。。。。。。。。。。
搜索结束后右键>find,输入:未购买
找到后双击那一行
双击后会跳转到这句话所对应的反汇编窗口的位置
注意左边的红线,那是跳转路径,可以看到:
在 004BC924 处有一个跳转,这个跳转如果实现的话就不会验证为“未购买用户”了
由于程序带壳,还不会脱壳,没法保存,所以这里不通过改跳转的方式破解
在上面找到了注册表项,应该就是这一部分进行了验证码的存取和对比,导致验证失败,对它下一个断点
初始化,点击箭头指的按钮
选择插件>API断点设置工具>常用断点设置
添加一个“取初始断点”
添加断点后 F9 执行,发现程序停在了这个地方,此时程序已经解码,但是还没有运行起来,没有进行验证注册信息
点击工具栏的 B 摁钮,查看所有的断点
这里有两个,一个是之前添加的注册表项的断点
一个是取初始断点,其中注册表项因为之前重新载入已经禁止了
把它重新激活,把取初始断点禁止掉,它已经没用了
这样
点击上面的 C 摁钮重新回到之前的操作界面
F9 运行起来,会在注册表项这里断掉,
开始用箭头指的摁钮一步一步往下走(快捷键 F8)
走了几步后返现了之前输入的没有用的注册码:
1111111111111111111
再往下走几步
发现了一串可疑的字符串,复制下来
用之前的用户名,得到的字符串进行验证
重新打开程序
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课