查壳, VMP 壳, 我们带壳调试.

程序一打开就要注册, 我们输入 MXYLR
和 123
, 我们确定之后, 程序要我们重启, 这很明显是一个重启验证, 我们重启, 当然注册失败了


我们看到程序根目录下有个 配置文件.ini
, 很可疑, 我们打开看下
重启验证中, 这个软件是通过读取文件作为验证手段, 这个文件里面存的就是我们刚刚输入的用户名和注册码, 每次打开程序都会读取一次这个文件里面的信息.
我们 OD 载入

设置 API 断点, OpenFile
, 这个 API 是用来打开文件的, 打开文件之后就是读文件, 下面的 ReadFile
就是读文件, 所以我们就直接设置 ReadFile
断点好了. 点击即可下断.
我们 F9 运行, 这里我运行多次才跳过了 QQ 拼音, 我们来到 00401000
查找字符, 一下就找到了提示我们注册的字符串, 我们跟进去.

很轻松就找到了跳过这个提示的跳转, 我们 F2 下断, 然后运行, 记得删除刚才的 API 断点
我们运行, 程序断在了关键跳转, 右下角堆栈窗口已经显示出来对应用户名的注册码了, 我们复制出来 :
MASM0012FD18 0016EF70 ASCII "DC07295893F0B7CC3398F39168D4FEC4"

它这是把我们刚才输入的 123
与正确注册码进行对比, 然后发现不是正确的, 所以跳转未实现.

我尝试修改了 ZF 标志位, 让这个跳转强制实现, 然后运行发现程序注册成功, 这说明我们以后可以在这里打补丁.

我们打开那个 配置文件.ini
, 把这个它填上去的正确注册码改掉, 然后打开程序,
这时候它又提示我们未注册了.