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

 

壳内寻找注册码

 

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

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张

 

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

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

 

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

 

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

 

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

 

 

 

 

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

 

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

 

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

 

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

 

 

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

 

 

 

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

 

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

 

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

 

 

 

 

 F9 运行

 

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

 

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

 

 

现在我们查看下断点

 

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

 

 

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

 

 

 


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

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

 

 

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

 

shark恒破解笔记1-壳内寻找注册码 随笔 第17张

 

 

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

 

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

 

shark恒破解笔记1-壳内寻找注册码 随笔 第18张

 

 

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

 

 

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄