Android逆向学习(1)--记一次破解某直播盒子App

本文详细解析了一款未加固的直播App充值机制的破解过程,包括反编译、源码分析及修改关键方法,最终实现免费观看直播内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

打击违法直播 净化网络环境
 

某天,我的一个朋友(这个朋友真不是我自己)发了我一款聚合直播App,大喜过望之后发现需要充值才能继续观看,
我这种穷逼哪来的钱充值,所以就有了这次逆向之旅

一、反编译

用 jadx-gui 直接打开Apk,发现没有加固,源码如下:

 

二、源码分析

1. 打开app,通过adb查看当前activity的名称

adb shell
dumpsys activity | grep -i run

com.box.base.MainActivity就是主页

2. MainActivity有四个tab页,找到第一个tab页FragmentLivePlatform

 打开FragmentLivePlatform,整个界面比较简单,为RecyclerView实现的GridView视图

找到item的点击事件

查看ActivityRoomList类,也是GridView布局,

查找item点击

jionLiveRequest请求完成后,会触发续费的dialog窗口,我们在这里拦截响应结果

我们发现请求时会传递当前界面的handler,查看hadler实现

当isSuccessFul方法返回false时,会弹出续费的dialog,那么问题简单了,我们只要修改isSuccessFul的返回值即可

修改isSuccessFul方法,永远return true

三、破解

1. apktool -r d test.apk

2. 将isSuccessFul复制到as中并修改

3. 生成smali代码(android studio 中使用java2smali插件)

4. 替换原代码(第一步apktool 反编译出来的smali文件)

5. apktool b test, 拿到未签名的apk

6. 签名

jarsigner -verbose -keystore test.keystore -signedjar G:\signapk\test.apk G:\hack\test_unsigned.apk android.keystore

大功告成

 

总结:

文中的app为快餐式应用,并未进行加固,代码混淆,重签名校验等安全策略,

所以并未涉及到脱壳,xposed,动态分析so,网络抓包等内容。

后面会针对性的去尝试破解,并寻找对应的安全方法

<think>嗯,用户这次询问的是关于 et_lib_ir_sdk.jar 文件的相关信息。这个文件名看起来像是某种红外(IR)功能的软件开发套件,可能和智能家居或物联网设备相关。 从用户的问题来看,ta可能遇到了需要集成这个SDK的情况,但缺乏相关文档和来源信息。这类第三方闭源库确实经常让开发者头疼,特别是当原始提供商信息不明确时。 我注意到之前引用的内容提到过编译系统处理第三方jar的规则,但那个例子是android-support-v4库,和这个红外SDK关系不大。用户可能需要更具体的指导。 关于这个文件,有几个关键点需要说明: - 文件名中的"et"可能是公司或项目缩写,但需要更多线索 - "ir_sdk"明确指向红外功能,常见于遥控类应用 - 这类SDK通常由硬件厂商提供,用于控制自家设备 用户可能需要从设备供应链入手查找,比如问硬件供应商要SDK。如果是从现有产品反推,逆向工程也是可能的方案,但要注意法律风险。 考虑到用户可能正在开发智能遥控类应用,我应该在回答中强调兼容性测试的重要性,不同厂商的红外协议差异很大。另外ta可能还需要知道如何集成到Android应用,所以补充了jar文件的基本使用方法。 最后生成的问题要覆盖用户可能遇到的后续障碍:找不到官方源怎么办?遇到兼容性问题如何调试?是否需要考虑备选方案?这些都是在实际开发中会遇到的现实问题。</think>基于文件名 `et_lib_ir_sdk.jar` 的分析,其用途、来源及开发相关信息如下: --- ### **1. 文件用途分析** * **`ir_sdk`**:明确表示与**红外(Infrared)**功能相关,常见于: * 智能遥控类应用(如手机/电视遥控) * 红外传感器数据交互(如温度计、安防设备) * 红外通信协议实现 * **`et_lib`**:可能指**开发公司/项目名称缩写**(例如 `Eternal`, `EastTech`, `EasyTouch` 等),需结合具体产品上下文确认。 * **`.jar` 文件**:Java 库文件,包含编译后的字节码(`.class`)、资源文件及元数据,供 Android 或 Java 应用集成调用。 **主要用途**:该库为 **Android 应用提供红外功能的软件开发套件(SDK)**,封装了红外信号发射、接收、编解码等底层硬件操作,开发者无需直接处理硬件驱动。 --- ### **2. 来源与下载** * **官方渠道优先**: 1. **硬件厂商提供**:若开发的是**手机/电视/盒子等设备的遥控应用**,该 SDK 通常由 **设备制造商** 或 **红外模组供应商** 直接提供。 2. **开发平台获取**:部分 IoT 平台(如涂鸦智能、小米 IoT)会为兼容设备提供 SDK 包,需在平台文档中心查找。 3. **项目依赖**:若为现有项目引入,检查项目文档或 `build.gradle` 文件中的依赖声明(如 `implementation files('libs/et_lib_ir_sdk.jar')`)。 * **非官方渠道风险**: * 第三方网站下载可能包含恶意代码或版本不兼容。 * **强烈建议通过官方途径获取**,避免法律和安全风险。 --- ### **3. 开发集成指南** #### **步骤 1:添加 Jar 到项目** ```gradle // Android Studio 中,将 jar 放入 app/libs 目录 dependencies { implementation files('libs/et_lib_ir_sdk.jar') } ``` #### **步骤 2:初始化 SDK** ```java // 示例伪代码,具体类名需参考文档 import com.et.ir.IRManager; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { IRManager.init(getApplicationContext(), "YOUR_APP_KEY"); // 通常需要授权密钥 } } ``` #### **步骤 3:调用核心功能** ```java // 发送红外信号(以 NEC 协议为例) IRManager.sendIRCode(0xFF00FF); // 参数为红外编码值 // 接收红外信号(需设备支持接收) IRManager.setOnIRListener(new IRListener() { @Override public void onIRCodeReceived(long code) { Log.d("IR", "Received code: " + code); } }); ``` #### **关键注意事项**: 1. **硬件依赖**:设备必须具备**红外发射器/接收器**(常见于旗舰手机、电视盒子)。 2. **权限声明**:在 `AndroidManifest.xml` 中添加: ```xml <uses-permission android:name="android.permission.TRANSMIT_IR" /> <!-- 发射权限 --> <uses-feature android:name="android.hardware.consumerir" /> <!-- 硬件特性声明 --> ``` 3. **协议兼容性**:确认 SDK 支持的**红外协议**(如 NEC、RC5、Samsung 等)是否匹配目标设备。 4. **厂商适配**:不同品牌设备的红外码值不同,需配套**码库数据库**或云接口。 --- ### **4. 排查常见问题** * **`ClassNotFoundException`**: * 检查 Jar 是否正确导入,`build.gradle` 依赖是否同步。 * 确认 ProGuard 混淆 SDK 类(在 `proguard-rules.pro` 中添加 `-keep class com.et.ir.** { *; }`)。 * **功能无效**: * 验证设备红外硬件是否可用(使用系统自带遥控工具测试)。 * 检查是否缺少 `TRANSMIT_IR` 权限或初始化 SDK。 * 确认红外编码值是否符合目标设备协议。 --- ### **总结** `et_lib_ir_sdk.jar` 是一个**红外功能 SDK 库**,用于 Android 应用的遥控开发。其来源通常是**硬件厂商或 IoT 平台**,需通过官方渠道获取。集成时需关注硬件兼容性、权限配置及协议匹配。若无法找到官方文档,可通过反编译(如 JD-GUI)查看内部类结构辅助开发(注意法律约束)[^1][^2]。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值