纯ida使用案例,逆向Acid_burn实验报告,超详细解析。

本文介绍如何使用IDA逆向工程工具破解Acid_burn软件的弹窗、登录验证及序列号验证。通过修改汇编指令实现软件的完全破解。

本文涉及到了纯ida 使用案例,逆向Acid_burn报告,通过使用ida直接修改汇编指令,或修改机器码,将补丁应用到输入文件中,超详细解析。

如果有帮到大家,哥哥姐姐不要吝啬点个关注呗!后续会更新更多其他有关汇编,逆向和web的实操超详细解析。谢谢大家!

一、分析软件

当我们点击该程序的时候会弹出一个窗口,这个窗口需要进行去除。

b4b1acd52a2143ab8ee37bdeeb8714fc.png

点击确定之后进入程序的主窗口,发现有两个按钮根据按钮上的字符串判断出应该是需要输入序列号和名称的位置。

83542819205f4996927703bf5de5386e.png

 我们首先来看左下角的按钮,点击发现有两个输入框,分别是输入用户名和序列码,然后点击Check it Baby 就会发现程序进行检查,检查错误就会弹出窗口里面的内容是:Sorry ,the serial is incorect ! 这个位置也是一个要破的点。

 

3848ed0f0ee04ca187a15fa4f5f95a21.png

接下来我们进行返回来查看右边按钮的情况,点击之后发现有一个输入框,是提醒你输入序列码的,我们进行输入,然后点击Check it Baby,程序进行检查,检查失败会弹出下面窗口,内容为:Try Again!!,发现这也是一个我们需要破的一个窗口。

b08776c4539d42febfca6356344e5ec2.png

 

二、破弹窗

我们将Acid_burn可执行文件附加到IDA中。

baad39e93ba64c45bfe25a281cca13a8.png

直接默认选项即可

   1b86599c650d416593776ec850dc94fd.png

按空格切换视图

 

点击alt+t,查找字符串you have to kill me

66b4d115eb6c45458c4e2ef002aef557.png

 

点击该行代码出现详细代码。

 

23c4f47db63d4bd3a14f71faa2a060d3.png

791493dac80d4df49a52347df2530e51.png

这里点击General,然后

96affc50a0a54018a2e54c7b2ce813cf.png

全部打钩方便我们后续观察

 

我们找到弹窗代码后,用空指令替换该弹窗指令或者将第一行代码使用RETN指令替换,即可成功跳过弹窗。在执行到弹窗函数之前会做一个je判断,如果zf=1,则跳转;zf=0则不跳转,这里我们使用暴力破的方式直接jmp过来,跳过弹窗函数。

这里演示一直修改方式

修改第一行代码为retn指令

 

f0540e2af98d4c0a8b254d3ddca66afe.png

点击选中该地址,然后点击hex view

e69250c532ae40799b703b73dc4b492e.png

发现该指令对应的机器码,同理可知retn的机器码为C3

664f84b2827c4177a85fdaf6ee900222.png

右键选择edit,编辑

88e7628874594b338c2e6ed930c8d4dd.png

修改好后继续右键,应用修改

37e476dcd6294e169c80f01885e0107f.png

最后点击Edit > Patch program > Apply pathes to input file > OK

433bd1e05c7e4caca09097d533461ef9.png

将补丁应用到输入文件中

d72f129e93434392a14cb5f02466310b.png

这里推荐创建备份

2d203ea292f84efab3f61b2da5e1d2c3.png

打开新保存的程序,已经没有弹窗了

97fc7dc110cd440ebea629ca29fec95b.png

 

三、破登录入口

接下来进行登录的,当序列号输入错误时,弹出对话框”Sorry, The serial is incorrect"

这次我们换个方法,按Shift+F12 跳转到字符串窗口

262da02c2c50494da1a74c61b49cd3ca.png

可以很简单的找到他,双击跳转

a02d40f0b57749229d2f1ba4577085fa.png

按空格切换视图后有助于我们分析

3e56aaa3b51a4587b43830e931464652.png

如果上一个call函数,执行后ZF=1,不跳转;ZF=0,则跳转。

这里呢,我们采用暴力破的方式,这里呢不能让指令跳转,所以我们修改jnz指令,破坏它的判断条件,改为jz。或者用nop填充他,使其失效。这里我们继续演示和上面不一样的方法。

e448172d3840419a8962ab701b65dbf3.png

点击Edit > Patch program > Assemble

47822196e997407c92d4a4721b3d35d0.png

6e388d3913fd4631955c5be09a1d4a72.png

1f2a3ccdfbfc41b88b012295f7b701e5.png

然后点击Edit > Patch program > Apply pathes to input file > OK

修改程序

51ac0adcc142498191c832c95d772a4e.png

657a249d32f84fdeb03fab082ed74298.png

运行程序

4cf5dbb498bd4827b6914869c82eaba7.png

成功!

四、破序列号

c461e7b7170340a58bc9fd527f37df94.png

根据上述操作,找到关键词Try Again!!,双击

bfc2ce93c9e24fee9824245a4231422b.png

双击黄色部分,找到被引用的地方

6299f4fa0b37425492d9eb3b3da26b35.png

dff6a026124146588c357e888daad801.png

和上一个一样的关键词,咱们进行同样的操作。

1419d98d20b24572b9a7a0cf8d7641e2.png

73ae7b3fb6c54e808bb06f6ea9e18503.png成功!

 

  

 

 

### 关于 Acid_Burn 序列化算法 Acid_Burn 并不是一个广泛认可的标准术语或已知的序列化算法名称。然而,在 IT 领域中,“序列化”通常指的是将对象的状态转换为可以存储或传输的形式的过程,而反序列化则是将其恢复为原始形式的操作。 如果假设 Acid_Burn 是一种特定场景下的自定义序列化方法或者是一个虚构的概念,则可以从通用的序列化机制出发探讨其实现与原理: #### 1. **序列化的常见实现** 大多数编程语言提供了内置支持来完成序列化操作。以下是几种常见的序列化方式及其特点: - **JSON (JavaScript Object Notation)** JSON 是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它常被用来作为 Web API 的数据传递标准[^3]。 ```json { "name": "Alice", "age": 25, "isStudent": false } ``` - **XML (eXtensible Markup Language)** XML 提供了一种结构化的方式来表示复杂的数据层次关系。尽管它的冗余度较高,但在某些领域仍然有广泛应用[^4]。 ```xml <person> <name>Alice</name> <age>25</age> <isStudent>false</isStudent> </person> ``` - **Protocol Buffers (Protobuf)** Google 开发的一种高效的二进制序列化格式,相比 JSON 和 XML 更加紧凑且性能更优。开发者需预先定义消息结构并编译对应的类文件[^5]。 ```protobuf syntax = "proto3"; message Person { string name = 1; int32 age = 2; bool is_student = 3; } ``` #### 2. **序列化的核心原理** 无论采用何种具体技术栈,序列化过程都遵循以下几个核心原则: - 数据映射:将内存中的变量、属性或其他逻辑单元按照既定规则转化为字节流或者其他可持久保存的形式; - 可逆性保障:确保通过反序列化进程能够精确还原初始状态而不丢失任何重要信息; - 跨平台兼容性考量:当目标环境可能涉及不同操作系统架构时,应特别关注端序(Big Endian vs Little Endian)、字符编码等问题; #### 3. **分布式事务背景下的序列化需求** 考虑到第二个引用提及了“分布式交易”,这暗示着该上下文中使用的序列化方案需要满足额外的要求——比如高并发情况下的效率以及跨服务间的一致性和可靠性维护。因此,即使不存在名为‘Acid_Burn’的确切算法,也可以推测其设计理念必然围绕这些方面展开优化尝试[^6]。 --- ###
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值