这小节是通过断在GetPrivateProfileStringA,然后找到注册码的。

1.运行程序
输入假码111111,提示重启。通过这判断这是一个重启来验证的,那么它是如何来验证的呢?观察程序目录下会发现有一个名为“config.ini"的文件

那么判断是通过读取ini文件来进行验证的。所以可以在GetPrivateProfileStringA处下断点,在它读取了ini中的注册码后,必然会与真码进行比较,那么我们就可以找到真码了。载入OD

下API断点:GetPrivateProfileStringA。这次是在这里设置断点:

运行程序,断下来


此时,就位于了GetPrivateProfileStringA函数里面。这里记录一下,我们利用这个断点,是因为这个软件是有壳,我们为了进入用户领空进行操作,所以利用了这个断点。

现在我们要脱离系统领空,进入程序领空,就用不到这个函数断点了。

所以Alt+F9返回到用户代码去。


观察汇编代码


从系统空间返回程序了,可是这里没什么关键跳,也没再寄存器窗口里看到可疑的字符串。只好一路F8直到retn。


跳出了上个call后,还是没发现什么。只好继续F8了。不久,就又断在了GetPrivateProfileStringA处,还是老办法Alt+F9返回到用户代码去。


返回用户空间后,只好继续F8。F8的过程中,观察堆栈和寄存器,不久就会出现这个:

可疑字符串出现了,感觉都复制出来,一一试验一下。

经测试我们找到了真码

最新文章

  1. 引用类型-Array类型
  2. Linux(二)__文件目录、常用命令
  3. MySQL 使用笔记
  4. Linux常用命令总结--分布式应用部署与监控
  5. android 弹幕效果demo
  6. SharePoint自动化系列——Add/Remove “Hold” from items
  7. JAVA IO流的简单总结+收集日志异常信息
  8. VIM 语法检查
  9. 彻底解决TAP(点透)提升移动端点击响应速度
  10. C#中字符串的处理,对象的引用及继承(Tenth day)
  11. 「七天自制PHP框架」第三天:PHP实现的设计模式
  12. JavaScript 创建一个 form 表单并提交
  13. 简单RPC框架-业务线程池
  14. Django的admin.py注册流程
  15. Error RZ3007: Targeted tag name cannot be null or whitespace
  16. linux命令之:yum
  17. CSS/Xpath 选择器 第几个子节点/父节点/兄弟节点
  18. 【HDU1846】Brave Game(博弈论)
  19. [总结]web前端常用JavaScript代码段及知识点集锦
  20. kdbg安装使用教程(kali)

热门文章

  1. 【第九篇】uploadify上传文件
  2. VG有空间,创建逻辑卷
  3. Django跳转到不同的页面的方法和实例–使用Django建立你的第一个网站
  4. servlet 的基础学习
  5. Asp.Net Core2.2 源码阅读系列——控制台日志源码解析
  6. [AWS] Lambda by Python
  7. Spring boot缓存初体验
  8. Java源码跟踪阅读技巧
  9. C/C++ 中带空格字符串输入的一些小trick
  10. Eureka实战-2【构建Multi Zone Eureka Server】