本节课将讲解一下重启验证,重启验证在软件中也是非常的常见的,重启验证的原理很简单,用户在注册界面输入注册码以后程序会自动将输入的注册信息保存到配置文件中,这里可能保存到注册表,也可能使用INI文件来保存数据,然后程序会强制重启,在程序的启动环节读入文件或注册表,然后完成整个验证的过程,最后决定是否注册完成,下面作者编写了一个重启验证的小程序,并使用VMP加密了整个软件,本节课我们将在不脱壳的情况下寻找程序的注册码,最后完成注册。

有些新手认为,壳是必须要脱掉的,其实不然,我们完全可以在不脱壳的情况下寻找注册码,因为程序运行后程序会在内存中被解码,只是我们无法直接修改源程序,当然如果真的需要修改的话可以直接给内存打一个补丁,API Hook 下,同样的可以完成破解任务,没有必要在壳上纠结。

------------------------------------------------------------
本章难度:★★☆☆☆☆☆☆☆☆
课程课件:CM_04.zip
------------------------------------------------------------

1.直接将程序载入OD,并运行起来看下反汇编窗口,可以看到代码已经被VM了,而且很乱单看这些根本无从下手。

这里我们需要想一下,既然是重启验证,那么在程序开始运行时就应该来判断用户注册码是否正确,这里我们的的程序是通过INI文件来验证的,INI文件的读写流程是什么?肯定是先打开文件,然后读入文件,然后才会判断是否合法,这就是正常的流程。

2.流程有了,接下来我们就得想办法让程序停在读取INI文件的代码位置,这里我们将学习一个新的API断点GetPrivateProfileStringA,这个断点就是专门用来读取ini配置文件的。

这里需要重新载入程序【不要运行】,因为运行后程序就已经判断完成了,直接点击【ini文件】,点击【GetPrivateProfileStringA】,下好断点。

3.下完断点之后,我们直接【F9】运行程序,如我们所料,程序断下了看右下角的堆栈窗口,注册项:key:section都出现了,这里段下的是第一次读取配置文件,这里读取到的是文件中的第一个字段的内容也就是,config.ini文件里的user字段的内容,这个字段默认就是lyshark,我们不用管直接跳过。

4.回到OD中,再次按下【F9】,程序在一次被断下,老样子看堆栈,这次读取到的就是注册码的字段了,也是我们最关心的字段。

为了让新手明白,程序编写的很简单只有两个字段的内容,所以只会断下两次,再按一次运行程序就跑起来了,以后如果在你破解的其他程序时遇到断下十几次或几十次的情况不要慌,慢慢跟看看有没有自己需要用到的字段内容,这说明程序在读取config.ini这样的配置文件,而配置文件中的字段较多,需要一个一个读取,所以会不停地被断下。

5.回到OD,单步【F8】直接出这个CALL,第一张图为进入CALL的断首,第二张为出CALL.

6.出CALL后,会发现一堆DB数据,这是OD自动的帮我们分析了代码,所以留下了一堆DB。

7.直接打开【右键】菜单,选择【分析】,然后【从模块中删除分析】,原始的代码就会出现了。

8.删除分析代码后发现,会看到下面的代码片段,左下角是我们输入的假的注册码,网上找并没有能跳过的CALL,所以果断出这个CALL.

9. 出CALL后,观察这一层代码太短了,直接无需考虑,直接出CALL.

10.这次出CALL发现了一些意想不到的收获,看到了配置文件名称,已经开始读取了。

12.上图我们看到了,程序应该是已经读取了config.ini这个配置文件,接下来应该就是对比了,我们单步【F8】尾随一下。

如上看到了一段特殊代码,然后后面就是注册成功的提示,我们直接把这个注册码记下来。

00482CC4=00482CC4 (ASCII "1E32S-14ES5-2KT84-EM6LS")

13.关闭OD吧,我们直接去试一下看能不能激活这个程序,上方的大跳转虽然是关键跳但我们无法直接修改程序代码,因为有壳。

                 

重启程序后发现注册完成,说明我们找的没错,这个小程序并没有通过机器码计算出注册码是为了让新手能够清晰的找到,我们主要学习的是INI断点的用法。

这个案例中虽然程序加了VMP强壳,但是我们在没有动壳的情况下依然顺利的找到了注册码。

写教程不容易,转载请加出处,您添加出处,是我创作的动力!

X86逆向4:VMP壳内寻找注册码的更多相关文章

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

    记录学习shark恒大教程的学习记录 壳内寻找注册码 OD打开 明显有壳 F9先运行程序 2.Ctrl+G输入401000到解码段,如果出现db ** 说明已经解码过,脱离了程序本身的壳 鼠标右键-& ...

  2. 第四课 VMP壳内爆破

    这一课用来演示的软件是文件巴士. 打开网页一搜索,可笑的是搜索到的结果都是破解版,想找个原版的倒费劲了. 好容易找到一个,下好一查壳,还没有... 行吧,自己加一个VMP壳开搞. 第一步 OD载入程序 ...

  3. X86逆向15:OD脚本的编写技巧

    本章节我们将学习OD脚本的使用与编写技巧,脚本有啥用呢?脚本的用处非常的大,比如我们要对按钮事件进行批量下断点,此时使用自动化脚本将大大减小我们的工作量,再比如有些比较简单的压缩壳需要脱壳,此时我们也 ...

  4. X86逆向14:常见的脱壳手法

    本章节内容将介绍软件的脱壳技术.什么是加壳?加壳就是用来压缩或者保护软件不被非法修改破解的一种工具,而脱壳就是将已经加壳的程序从壳中剥离出来,既然能给程序进行加壳,那也就会有相应的脱壳方法,本节课我们 ...

  5. X86逆向12:内存补丁的制作

    本章我们将学习各种打补丁的方式,补丁在软件的破解过程中非常的重要,比如软件无法脱壳我们就只能通过打补丁的方式来破解程序,补丁原理就是当程序运行起来会被释放到内存并解码,然后补丁就通过地址或特征码定位到 ...

  6. X86逆向3:通过修改关键CALL破解

    软件逆向第一课中我们通过爆破的方式直接破解了程序的登录限制,但这一种方式很不合理,因为你只是破解了登录这一处的验证,如果程序内部还有其他的验证那么你需要再次爆破第二个验证,显然这种方式是很烦人的,如果 ...

  7. X86逆向1:软件破解入门课【课件下载】

    从本节课开始,我将带领小白入门学习软件破解的相关内容,大佬绕过,以后将会定期更新从最基本的破解知识点开始学习,由简单到复杂循序渐进,难度会逐步提高. 为了防止版权方面的争议,我将自行编写一些破解案例来 ...

  8. X86逆向10:学会使用硬件断点

    本节课我们将学习硬件断点的使用技巧,硬件断点是由硬件提供给我们的一组寄存器,我们可以对这些硬件寄存器设置相应的值,然后让硬件帮我们断在需要下断点的地址上面,这就是硬件断点,硬件断点依赖于寄存器,这些寄 ...

  9. X86逆向8:向程序中插入新区段

    本节课我们不去破解程序,本节课学习给应用程序插入一些代码片段,这里我就插入一个弹窗喽,当然你也可以插入一段恶意代码,让使用的人中招, 这里有很多原理性的东西我就不多罗嗦了毕竟是新手入门教程,如果想去了 ...

随机推荐

  1. CISCO实验记录四:备份路由器的IOS

    1.配置好TFTP服务器(假设ip为192.168.2.1) 2.查看当前IOS名称 #show version 输出中有一段:System image file is "bootflash ...

  2. centos6.9实现双网卡绑定

    1.创建bond0文件 # vi /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 NM_CONTROLLED=no #是否由networ ...

  3. 线性dp,分层图思想

    题目大意:给你一串数字,一串运算符,求递推用完运算符时答案的最大值----->线性dp dp[i][j] i表示所用数字的个数   j表示所用字符的个数 分层图思想 所有字符必须用完 所以取最后 ...

  4. ArcGIS Python获得一个图层所有线长

    import arcpy # Create an empty Geometry object # g = arcpy.Geometry() # Run the CopyFeatures tool, s ...

  5. 封装带SSH跳板机的REDIS

    一.封装ssh的redis 二.setting的配置 三.应用示例 import redis from sshtunnel import SSHTunnelForwarder from conf.se ...

  6. Vue UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例

    Vue UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例 element ★11612 - 饿了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于Vue和WeUI的组件库 ...

  7. Oracle常用CURD

    -------------------------------------------------------------------------------------通用函数和条件判断函数 使用N ...

  8. Java商城秒杀系统的设计与实战视频教程(SpringBoot版)_汇总贴

    51CTO学院 Java商城秒杀系统的设计与实战视频教程(SpringBoot版) H:\BaiDu\微服务0830\2019最新 Java商城秒杀系统的设计与实战视频教程(SpringBoot版) ...

  9. Java SpringBoot React Redux

    1.字符串转换相关 - React 前端JS部分 JSON.parse(JSON.stringify(copyRow)); 2.字符串分隔相关,弹出confirm确认框,显示换行信息 - React ...

  10. linux简单命令9--yum安装软件

    +