0x01 查壳
用传统工具查下
应该是没有壳的,那么我们直接进入正题
0x02 去除弹框
OD加载程序
F9执行
然后F12暂停,再按Alt+F9恢复运行,这时点击确定就可以恢复用户态。
观察堆栈
看不出来,用插件中的中文搜索引擎-智能搜索,搜索出现的字符串Welcome
找到地址,进入,双击下断点,重新运行
单步步过,找到触发当前弹框函数的原函数
我们接着分析原来的函数,按回车键跟随
那么我们nop掉这个地方再试试,注意确定了功能后可以双击来加注释,方便继续分析
然后我们继续分析程序,这里最后我们再Patch
0x03 分析注册
随意输入注册
字符串搜索,找到Sorry
这里有一个cmp,和4进行比较,大于等于4就会跳转
下断点分析,用户名小于4,直接进下面,具体分析可以进入上面的函数来观察
注意此时的eax,为1,也就是我们输入的serial长度
可以确定为统计字符串长度,且统计的是之前eax的长度;那么就可以确定了。
后面还有一个统计长度
这里的[local.4]表示是ebp的-4*4=ebp-16,意思是局部变量,我们可以在窗口中右键追踪从而看到
然后是乘以十六进制29,可以看出
右键搜索常量431750,可以找到这个地址最初被赋值的地方
经过字符串拼接,我们已经可以从栈中看出生成的注册码了
这个注册码对应的是用户名aaaa,我们试试
7954=ascii('a')*41*2
所以我们就可以写注册机了;这个程序的破解大致就是这样。
0x04 暴力注册
虽然这里我们分析出了算法,但是还是费了一些力气的
我们也可以直接暴力破解,输入任意字符破解;
先到一开始的地方,查找字符串Good Job
jnz比较妙,那么我们就改成jz,是不是就OK了
重新运行
随意输入就能注册成功
0x05 补丁注入
这里我们修改了这个程序,实现了我们的功能;那么最后我们在发布破解版程序的时候,肯定需要把补丁应用上去。
我们右键-复制到可执行文件-所有
然后点击叉掉,会提示我们文件和原来不同,然后换个名字保存即可
我们就制作出了补丁程序,从而可以运行了打补丁的程序,和破解版一样
Comments NOTHING