shark恒破解笔记1-壳内寻找注册码

shark恒破解笔记1-壳内寻找注册码

记录学习shark恒大教程的学习记录

 

壳内寻找注册码

 

shark恒破解笔记1-壳内寻找注册码_第1张图片

shark恒破解笔记1-壳内寻找注册码_第2张图片

 

 

OD打开 明显有壳

shark恒破解笔记1-壳内寻找注册码_第3张图片

 

 

F9先运行程序 2、Ctrl+G输入401000到解码段,如果出现db **

说明已经解码过,脱离了程序本身的壳

 

 鼠标右键->分析->从模块中删除分析 在这可以搜索字符串

 

shark恒破解笔记1-壳内寻找注册码_第4张图片

 

 

shark恒破解笔记1-壳内寻找注册码_第5张图片

 

 

 

搜索字符串 “未购买”

 

shark恒破解笔记1-壳内寻找注册码_第6张图片

 

 

shark恒破解笔记1-壳内寻找注册码_第7张图片

004BC939 BA 8CCA4B00 mov edx,engydt.004BCA8C ; - 未购买用户

 

 因为这里显示未购买,那么前面一定有个地方是判断了注册码的正确与否,我们向上翻

 

shark恒破解笔记1-壳内寻找注册码_第8张图片

 

004BC8A0    BA 40CA4B00     mov edx,engydt.004BCA40                  ; Software\engydt

 

 

 

 

 这里是关于注册表项的信息,程序肯定时在启动的时候访问了注册表,提取了我们输入的用户名和假码,然后判断是错误,所以注册失败,我们在这里下断点。重新运行

 

ps;为何选择在这里下断点呢?因为软件读取注册表里的注册码后,会和真码进行比较,断在这里,然后进行单步调试,就可以找到真码了。

 

shark恒破解笔记1-壳内寻找注册码_第9张图片

 

 shark恒破解笔记1-壳内寻找注册码_第10张图片

 

 

 shark恒破解笔记1-壳内寻找注册码_第11张图片

 

 

 

下个GetStartupInfoA断点,重新运行,让程序在解码后未真正"运行"前断下来

 

ps:为何要在这个API下断点?我的理解是由于加了壳,所以程序中注册表项下的那个断点是不能用的,只得在软件脱壳后且未验证之前再下一个断点,让我们有时间来手动激活注册表项中的断点。

 

shark恒破解笔记1-壳内寻找注册码_第12张图片

 

 

 

 

 F9 运行

 

shark恒破解笔记1-壳内寻找注册码_第13张图片

 

发现程序已经在初始化之前断了下来

 

 

现在我们查看下断点

 

shark恒破解笔记1-壳内寻找注册码_第14张图片

 

 

观察断点窗口,前面下的断点a,b,c如果显示是add byte ******表示还
没解码完成。继续F9运行程序,直到显示正常汇编程序代码,

 

 

 


删除或禁用GetStartupInfoA断点,因为是有壳的程序,这时下的a,b,c断点
是禁用的,我们右键激活它,F9运行,程序会断在a,b,c断点处断下。

shark恒破解笔记1-壳内寻找注册码_第15张图片

 

 

 F9运行 可以看到成功在注册表项处断了下来

 

shark恒破解笔记1-壳内寻找注册码_第16张图片

 

 

然后我们开始F8单步执行 来分析

 

直到注册码在堆栈窗口出现

 

 

 

有壳的程序不能保存,需要打补丁,这里直接复制了注册码就成功注册了。

 

 

 

posted @ 2019-04-15 09:44 卿先生 阅读( ...) 评论( ...) 编辑 收藏

你可能感兴趣的:(shark恒破解笔记1-壳内寻找注册码)