某次心血来潮的破解案例

某次心血来潮的破解案例背景前面遇到一个so解密的问题,学习了一波IDA。无聊之际,买了个游戏来耍耍,突发奇想,想着尝试一些花里胡哨的东西,于是有了以下内容。逻辑分析与实现寻找对应代码实现dl

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

某次心血来潮的破解案例

背景

前面遇到一个so解密的问题,学习了一波IDA。

无聊之际,买了个游戏来耍耍,突发奇想,想着尝试一些花里胡哨的东西,于是有了以下内容。

逻辑分析与实现

寻找对应代码实现dll文件

查看文件已知是Unity3d 开发。详细可查看

Unity3d 加密 Assembly-CSharp.dll (Android平台) 全记录
新发的日常学习——IDA的入门使用

配置

显示机器码

Options >> General

开启注释

Option->General->Auto Comments

打开注释后,根据注释来跟踪逻辑

某次心血来潮的破解案例

2次执行将0压入堆栈后,将iq压入堆栈,然后将iq压入堆栈

后面即是调用方法获取property_IQ并且压栈。压1 入栈,再然后将与0.0运算的值压栈。调用Max方法进行计算最大值。1和0.0做max运算是因为避免出现负数的原因,而在0.0中动手脚,让他计算最大值等于我们需要的数值即可实现。

某次心血来潮的破解案例

某次心血来潮的破解案例

0.0是4个字节,则可改动空间较大

某次心血来潮的破解案例

寻找文件偏移地址做些修改。

00024ba6

某次心血来潮的破解案例

根据文件偏移地址找到0.0对应位置,随后可对其修改数值。

计算一个10000的16进制数值对其进行替换,让他max运算等于10000即可实现。

int main()
{
	float val = 100000.0f;
	printf("%08X", *(unsigned int*)&val);
}

//结果:47C35000

某次心血来潮的破解案例

某次心血来潮的破解案例

某次心血来潮的破解案例

修改数据成功。

踩坑点

实际测试中使用c32asm发现替换dll,进去游戏直接黑屏了。而使用UltraEdit并不会有这种问题。修改需要注意字节排序。

最后

仅作为技术研究。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/119846.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • pycharm中python版本_如何在pycharm中切换python版本「建议收藏」

    pycharm中python版本_如何在pycharm中切换python版本「建议收藏」由于历史原因,现在的python主要流行的是2.5左右的版本和3.0之后的版本。在实际中,我们也会选择不同的版本,或者随时切换版本。接下来我会介绍如何再pycharm中切换python版本工具/原料pycharm软件python3.3和python2.7两个版本,并且安装好方法/步骤1打开软件会看到,这里有明显的红色提示错误。原因是当前使用的是python3.3,当执行print的时候,打印的文字…

  • 常用字体颜色_常用字体大全

    常用字体颜色_常用字体大全1白色#FFFFFF2红色#FF00003绿色#00FF004蓝色#0000FF5牡丹红#FF00FF6青色#00FFFF7黄色#FFFF008黑色#0000009海蓝

  • python pip卸载不了库,比如使用pyinstaller时greenlet报错但卸载不了

    python pip卸载不了库,比如使用pyinstaller时greenlet报错但卸载不了其实本来不想卸这些说不定哪天还有用的包……但pyinstaller运行时报错提示greenlet库有问题,不卸载就无法成功运行。尝试了更新greenlet,但pyinstaller打包程序时依然报greenlet的错_(:з」∠)_尝试了用condauninstallgreenlet和pipuninstallgreenlet,都不成功。另一个办法是找到greenlet所在的文件夹(cmd输入pipshowpackagegreenlet可以看),我的是在D:\Anaconda3\Lib\si

    2022年10月19日
  • jps命令详解_jps用什么文件打开

    jps命令详解_jps用什么文件打开jps命令详解

  • 懒加载(Lazy Loading) – MyBatis懒加载 – Spring懒加载

    懒加载(Lazy Loading) – MyBatis懒加载 – Spring懒加载文章目录懒加载(LazyLoading)MyBatis中懒加载的使用Spring中懒加载的使用懒加载(LazyLoading)  懒加载也叫“延迟价值”,核心思想是把对象的实例化延迟到真正调用该对象的时候,这样做的好处是可以减轻大量对象在实例化时对资源的消耗,而不是在程序初始化的时候就预先将对象实例化。另外“懒加载”可以将对象的实例化代码从初始化方法中独立出来,从而提高代码的可读性,以便于代码能够更好地组织。  特别是在web应用程序中,它能够在用户滚动页面的时候自动获取更多的数据,而新得到的数据

  • Map和Set的区别_list与set的区别

    Map和Set的区别_list与set的区别目录一、简述二、Map三、Set四、Set和Map区别一、简述Set和Map主要的应用场景在于数据重组和数据储存。Set是一种叫做集合的数据结构,Map是一种叫做字典的数据结构。集合(Set):ES6新增的一种新的数据结构,类似于数组,成员唯一(内部元素没有重复的值)。且使用键对数据排序即顺序存储。Set本身是一种构造函数,用来生成Set数据结构。Set对象允许你储存任何类型的唯一值,无论是原始值或者是对象引用。二、Ma…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号