软件逆向爆破初次尝试1:对Ride7的分析—注册函数的寻找过程

先介绍基本情况:我是做嵌入式开发的,所以对C语言比较了解.由于上位机软件和设备测试需要,有时候也会写一些C++(主要是QT),C#,python的程序,所以各方面知识都懂一些.

好多人觉得写代码很枯燥,但我还是比较喜欢写代码的,特别是喜欢做调试,是不是很奇怪。最近发现自己的stm32 primer不能用了,原因是老的软件没有win10下面的驱动,于是找了最新版的Ride7安装。奈何奸商太坏,我用primer自带的rlink注册竟然提示超过有效期,于是才想到了学习逆向,进入了这个世界我就感觉上瘾啦,太符合我的爱好了(大笑)。由于我有一些基础知识,这样对于学习软件逆向爆破省去了很多基础的学习过程,这些我就不介绍啦,初入门的话还是要学点汇编和windows编程基础的。我是只看了一节ollydbg的调试课程就开始实践写下了这个文章,中间可能有些比较低级的操作或者错误各位大佬莫笑,望大家指正。

----------分割线-----------------

打开OD,加载程序Ride7.exe,F9运行

 

软件执行注册过程,输入序列号,报错

于是我就想, 是不是只要让这边跳过序列号判断,就可以完成注册了,说干就干,开始查找字符串”Invalid Serial Number”.

右键代码区-中文搜索-搜索ASCII

找到对应的字符串

双击跳转到代码区域

 

再往上找跳转语句,发现

  1. 008D9E87处的代码可以跳过Invalid SerialNumber提示
  2. 008D9E89处代码从008D9D2D和008D9D67跳转过来,执行到此处肯定提示Invalid提示
  3. 008D9E90从008D9D13跳转过来,执行到此处下面进入Invalid提示

于是我就想,修改掉008D9D2D和008D9D67和008D9D13三处的跳转,让程序直接运行008D9E87处的跳转语句jmp short 008D9EA3

先在最早的地址下断点008D9D13,检查ZF标志为0,表示前面的运算不相等,所以不会跳转.

 

双击008D9D13处语句,直接跳过Invalid提示

 

程序虽然没有提示Invalid,但是依然提示重新输入RKit序列号..

说明跳转不对,于是把那边改成nop,让程序继续运行下去

8D9D67处也改成nop

 

一路单步执行到008D9EA3,没有其他地方跳转到Invalid了.F9全速运行

此时界面变了,提示输入activecode

 

随便输入一个,提示如下

继续搜索ascii码

E选择可执行模块ride7.exe

搜索ascii,双击跳转

和之前一样的搜索方式,往上找跳转,想办法跳过这个提示.

000B9924是用来跳过Unable提示的

上面如果有出错则会跳转到000B9926,所以可以沿着000B9926找到跳转过来的地方,改掉.

又发现B9917处,可以从000B9898,000B98B0, 000B98C8, 000B98E0, 000B98F8, 000B9910多方面跳转过来,而执行到B9917处的话也是可以跳过Unable错误提示的,这里我就往上看了一下代码

感觉很像对MCU类型的判断,既然我们是用来编译ARM的,那我就改ARM处的跳转代码.也就是希望能执行到B9898

单步执行发现修改B9891,不要跳转即可顺利执行到B9898,然后略过报错

 

接着出现新错误提示

搜索ASCII码,跳转到B9C6D

 

往上找跳转,找到769c66,发现从769bb2跳转过来的,

 

找到769bb2,下断点,查看ZF=0,继续执行的话就会发生跳转到769c66,继而提示activation code err,

所以把这边的跳转改成nop,让程序继续执行.

 

单步调试可以发现关于activation的备注,并且在执行到769C0A就会提示””Activation error”,预测激活的流程应该就在这一段里面

单步执行到00769BF2,函数名为SetActivation

查看堆栈,参数为刚才我们设置的激活码

猜测这个地方call的就是真正的激活函数.接下来需要跳转到函数里面进行分析爆破,F7进入,程序跳转到Rkits07.dll

到此找到了ride7的注册函数真正位置,接下来就是怎么让注册顺利进行了,下期再见。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值