记录学习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单步执行 来分析

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

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

最新文章

  1. Matlab编程知识点
  2. Netty参数配置表
  3. 【Oracle】oracle中快速判断某一日期是闰年或平年
  4. 配置本地光盘为yum源
  5. zepto.js 源码解析
  6. 01-01-01【Nhibernate (版本3.3.1.4000) 出入江湖】配置文件
  7. Jsoup 解析 HTML
  8. 【转载】关于Python脚本开头两行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定文件编码类型
  9. C# winform调用WebBrowser经典怪问题总结
  10. Direct3D中的绘制
  11. [C#]如何访问及调用类中私有成员及方法
  12. javaweb中的乱码问题(初次接触时写)
  13. Anaconda创建caffe和tensorflow共存环境
  14. P1160 队列安排 luogu洛谷
  15. Multiple Threads reading from the same file(转载)
  16. GIT无法自动忽略YellowRV1.1.uvgui.Administrator文件的解决方法
  17. 记一次恐怖的 Integer 溢出
  18. CRC16位校验
  19. 虚拟信用卡 全球付, 工商银行国际E卡, Bancore, Entropay, Payoneer
  20. linux 使用systemctl 启动服务报错: Error: No space left on device

热门文章

  1. Android图片的缩放效果
  2. 操作系统原理之I/O设备管理(第六章上半部分下)
  3. PHP 错误:Warning: Cannot modify header information - headers already sent by ...
  4. charles 发布Glist
  5. 59 (OC)* atomic是否绝对安全
  6. [Linux] Linux中重命名文件和文件夹的方法(mv命令和rename命令)
  7. 管中窥豹——框架下的SQL注入 Java篇
  8. JQuery学习笔记之手网琴效果
  9. Android Adapter的一些记录
  10. 2019-2020-1 20199303 《Linux内核原理分析》 第一周作业