shark恒破解笔记1-壳内寻找注册码
记录学习shark恒大教程的学习记录
壳内寻找注册码
OD打开 明显有壳
F9先运行程序 2、Ctrl+G输入401000到解码段,如果出现db **
说明已经解码过,脱离了程序本身的壳
鼠标右键->分析->从模块中删除分析 在这可以搜索字符串
搜索字符串 “未购买”
004BC939 BA 8CCA4B00 mov edx,engydt.004BCA8C ; - 未购买用户
因为这里显示未购买,那么前面一定有个地方是判断了注册码的正确与否,我们向上翻
004BC8A0 BA 40CA4B00 mov edx,engydt.004BCA40 ; Software\engydt
这里是关于注册表项的信息,程序肯定时在启动的时候访问了注册表,提取了我们输入的用户名和假码,然后判断是错误,所以注册失败,我们在这里下断点。重新运行
ps;为何选择在这里下断点呢?因为软件读取注册表里的注册码后,会和真码进行比较,断在这里,然后进行单步调试,就可以找到真码了。
下个GetStartupInfoA断点,重新运行,让程序在解码后未真正"运行"前断下来
ps:为何要在这个API下断点?我的理解是由于加了壳,所以程序中注册表项下的那个断点是不能用的,只得在软件脱壳后且未验证之前再下一个断点,让我们有时间来手动激活注册表项中的断点。
F9 运行
发现程序已经在初始化之前断了下来
现在我们查看下断点
观察断点窗口,前面下的断点a,b,c如果显示是add byte ******表示还
没解码完成。继续F9运行程序,直到显示正常汇编程序代码,
删除或禁用GetStartupInfoA断点,因为是有壳的程序,这时下的a,b,c断点
是禁用的,我们右键激活它,F9运行,程序会断在a,b,c断点处断下。
F9运行 可以看到成功在注册表项处断了下来
然后我们开始F8单步执行 来分析
直到注册码在堆栈窗口出现
有壳的程序不能保存,需要打补丁,这里直接复制了注册码就成功注册了。
posted @
2019-04-15 09:44 卿先生 阅读(
...) 评论(
...) 编辑 收藏