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

博主分享了使用OllyDbg逆向破解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的注册函数真正位置,接下来就是怎么让注册顺利进行了,下期再见。

源码下载地址: https://pan.quark.cn/s/a4b39357ea24 【运算单元构造实验报告】运算单元是计算机硬件系统中的关键构成部分,主要承担执行算术运算和逻辑运算的任务。在本次实验中,我们着重探讨了带有累加器的运算单元的设计,涵盖了溢出识别、有符号数值与无符号数值运算的差异性,以及采用补码方式进行的加法与减法运算的实现机制。 一、实验目标 1. 掌握运算单元的基本构造,理解带有累加器的运算单元的具体实现途径。 2. 学习并领会溢出检测的机制,能够设计并构建溢出检测电路,用以判定运算结果是否超出了数据类型的表示范畴。 3. 明辨有符号数值和无符号数值运算的不同特性,把握它们在运算过程中各自的处理方法。 4. 熟练掌握基于补码方式的加法与减法运算的执行,理解补码形式下的溢出判定准则。 5. 熟悉运算单元内部的数据传输路线,明晰数据在运算过程中的流转路径。 6. 设计一个能够支持有符号数值与无符号数值运算、补码加法/减法运算以及有符号数值溢出检测的运算单元电路。 二、实验仪器 采用JZYL—Ⅱ型计算机组成原理实验装置,配备2片74181运算单元芯片作为算术逻辑单元(ALU),2片74LS373用作八位D型锁存器,并辅以一些基础门电路和多路选择器来完成电路设计。 三、实验内容 1. 运用片74181构建一个8位运算单元,负责处理数据的高4位与低4位。 2. 设计并实现溢出检测电路,确保在有符号数值与无符号数值的加法运算中均能准确识别溢出状况。 3. 通过74LS373增加累加器功能,使运算结果得以保存。 4. 将所有设计整合,利用多路选择器来支持有符号数值与无符号数值的加法/减法运算。 四、实验电路 1. 8位运算单元由2片74181构成,通过控制...
内容概要:本文围绕“超导磁能储存系统的建模和仿真(Simulink仿真实现)”展开,系统介绍了基于MATLAB/Simulink平台的多种电力电子系统、新能源并网技术、储能控制策略及智能优化算法的建模仿真方法。重点涵盖超导磁能储存系统、光伏逆变器序阻抗建模、虚拟同步发电机(VSG)、风光火储多源协同调频、构网型变流器等关键电力系统组件的动态特性分析与仿真设计,并结合博士/硕士论文复现案例,提供完整的代码与模型资源。同时整合了智能优化算法(如GA、PSO、AFO等)、机器学习、路径规划、信号处理等多学科仿真技术,构建了一个面向科研实践的综合性仿真资源库。; 适合人群:具备一定科研基础,从事电气工程、自动化、能源系统、电力电子与电力系统稳定控制等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①开展超导磁能储存系统、新能源并网系统或微电网的建模与稳定性仿真研究;②学习并应用智能优化算法解决电力系统调度、路径规划与多目标优化问题;③复现高水平期刊或学位论文中的仿真模型,提升科研创新能力与论文复现能力;④获取完整仿真代码与模型资源以加速科研项目进展。; 阅读建议:建议读者结合提供的网盘资源,按照目录结构系统学习,优先掌握Simulink建模基础与MATLAB编程技能,重点关注博士/硕士论文复现案例,通过动手实践深入理解复杂系统的建模逻辑与优化算法实现过程
内容概要:本文系统研究了风光火储多源协同参与电网一次调频与二次自动发电控制(AGC)的联合调控策略,依托Matlab/Simulink平台构建包含风能、光伏、火电及储能系统的多能源协同仿真模型。研究重点在于设计高效协调的控制机制,使各类电源在电网频率发生波动时能够快速响应并协同调节,提升系统频率稳定性与动态响应性能。通过引入构网型控制、虚拟同步机(VSG)、下垂控制等先进控制技术,实现了对一次调频的瞬时功率支撑与二次AGC的精确频率恢复控制,并在电磁暂态层面完成仿真验证,有效复现了高水平学术论文中的核心成果,兼具理论深度与工程实践价值。; 适合人群:电力系统、新能源并网、智能电网控制等领域的研究生、科研人员及从事电力系统仿真与运行控制的工程技术人员,需具备Matlab/Simulink建模能力及电力系统动态分析基础。; 使用场景及目标:① 分析多源电力系统在负荷扰动下的频率响应特性;② 掌握风光火储协同调频的控制逻辑与系统建模方法;③ 复现博士论文或SCI期刊级别的研究成果,支撑科研课题、学位论文撰写与工程项目开发。; 其他说明:该资源提供完整的Matlab代码与Simulink仿真模型,可通过指定公众号或网盘链接获取,建议结合理论学习与仿真实验,深入掌握多源协同控制策略的设计与优化方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值