shark恒破解笔记1-壳内寻找注册码
2024-09-01 11:17:13
记录学习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单步执行 来分析
直到注册码在堆栈窗口出现
有壳的程序不能保存,需要打补丁,这里直接复制了注册码就成功注册了。
最新文章
- Matlab编程知识点
- Netty参数配置表
- 【Oracle】oracle中快速判断某一日期是闰年或平年
- 配置本地光盘为yum源
- zepto.js 源码解析
- 01-01-01【Nhibernate (版本3.3.1.4000) 出入江湖】配置文件
- Jsoup 解析 HTML
- 【转载】关于Python脚本开头两行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定文件编码类型
- C# winform调用WebBrowser经典怪问题总结
- Direct3D中的绘制
- [C#]如何访问及调用类中私有成员及方法
- javaweb中的乱码问题(初次接触时写)
- Anaconda创建caffe和tensorflow共存环境
- P1160 队列安排 luogu洛谷
- Multiple Threads reading from the same file(转载)
- GIT无法自动忽略YellowRV1.1.uvgui.Administrator文件的解决方法
- 记一次恐怖的 Integer 溢出
- CRC16位校验
- 虚拟信用卡 全球付, 工商银行国际E卡, Bancore, Entropay, Payoneer
- linux 使用systemctl 启动服务报错: Error: No space left on device
热门文章
- Android图片的缩放效果
- 操作系统原理之I/O设备管理(第六章上半部分下)
- PHP 错误:Warning: Cannot modify header information - headers already sent by ...
- charles 发布Glist
- 59 (OC)* atomic是否绝对安全
- [Linux] Linux中重命名文件和文件夹的方法(mv命令和rename命令)
- 管中窥豹——框架下的SQL注入 Java篇
- JQuery学习笔记之手网琴效果
- Android Adapter的一些记录
- 2019-2020-1 20199303 《Linux内核原理分析》 第一周作业