【Android逆向】修改so文件方式修改程序行为

android,逆向,修改,so,文件,方式,程序,行为 · 浏览次数 : 306

小编点评

**apktool_2.2.4.jar** 文件的内部结构如下: ```zip app-debug-new.apk - app-debug-new.apk (签名文件) - app-debug-new-signed.apk (已签名文件) - app-debug-new-signed.apk.part1 - app-debug-new-signed.apk.part2 ``` **步骤:** 1. **打开 so 文件**:使用 **010Editor** 等编辑器打开 **app-debug-new.apk** 文件。 2. **双击字符串 **“hello 52pojie!”** 并点击 **“跳转到该字符串的偏移地址”**按钮。 3. **在 ida 中查找字符串 **“00001BB8”**。 4. **将 so 文件拖放到 010Editor 中,然后使用 **ctrl+g** 跳转到该位置。 5. **在在线字符转码器** 中将字符串 **“52pojie!”**转换为 **“6A69616E67”**。 6. **替换字符串 “52pojie!”** 在 so 文件中所有匹配该字符串的位置。 7. **重新打包** so 文件并签名。 8. **使用**androidkiller** 等工具运行文件,并注意日志输出。 9. **查看日志** 中的输出信息,包括调用方法和偏移地址。

正文

1. 还是之前的那个apk

链接:https://pan.baidu.com/s/1vKC1SevvHfeI7f0d2c6IqQ 密码:u1an
尝试使用 010Editor来修改so文件

2. 使用ida打开so文件,双击 hello 52pojie!,会跳转到该字符串的偏移地址,ida显示是00001BB8 ,要的就是这个值

3. 将so拖入到010Editor中,ctrl+g跳转到该位置

4. 找一个在线字符转ascii码的网站,转jiang到ascii码6A69616E67, 替换掉52pojie!, 由于52pojie!字符数大于jiang,其余位置补零

5. 重打包,重签名(注意最好用jdk8来处理,高版本jdk签名时会报错)

java -jar ../apktool_2.2.4.jar b app-debug -o app-debug-new.apk 
java -jar signapk.jar platform.x509.pem platform.pk8 app-debug-new.apk app-debug-new-signed.apk

# 当然也可以用androidkiller来处理

6. 安装执行,查看日志

//before
02-18 15:26:20.931  6982  6982 I 开始调用so中的sayHello方法: hello 52pojie!
02-18 15:26:46.216  7039  7039 I 开始调用so中的sayHello方法: hello 52pojie!
//after
02-18 16:15:46.650  8973  8973 I 开始调用so中的sayHello方法: hello jiang
02-18 16:17:47.321  9350  9350 I 开始调用so中的sayHello方法: hello jiang
02-18 16:36:34.898 10603 10603 I 开始调用so中的sayHello方法: hello jiang

与【Android逆向】修改so文件方式修改程序行为相似的内容:

【Android逆向】修改so文件方式修改程序行为

1. 还是之前的那个apk 链接:https://pan.baidu.com/s/1vKC1SevvHfeI7f0d2c6IqQ 密码:u1an 尝试使用 010Editor来修改so文件 2. 使用ida打开so文件,双击 hello 52pojie!,会跳转到该字符串的偏移地址,ida显示是00

【Android 逆向】【ARM汇编】 arm64部分知识

arm64寄存器更多 X0-X30 SP CPSR PC 64位 W0-W30 32位 PC寄存器的值禁止修改 参数放在 X0-X7/W0-W7 结果放在 X0 函数返回 RET 相当于 bl lr Arm64 没有LR寄存器, lr用X30 栈底用X29 ARM64 取消了ldm/stm push

【Android逆向】frida 破解 jwxdxnx02.apk

apk 路径: https://pan.baidu.com/s/1cUInoi 密码:07p9 这题比较简单,主要是用于练习frida 1. 安装apk到手机 需要输入账号密码 2. 使用jdax 查看apk package hfdcxy.com.myapplication; import andr

[Android逆向]Exposed 破解 jwxdxnx02.apk

使用exposed 遇到了一些坑,这里记录一下 源码: package com.example.exposedlesson01; import de.robv.android.xposed.IXposedHookLoadPackage; import de.robv.android.xposed.X

[Android 逆向]frida 破解 切水果大战原版.apk

1. 手机安装该apk,运行,点击右上角礼物 提示 支付失败,请稍后重试 2. apk拖入到jadx中,待加载完毕后,搜素失败,找到疑似目标类MymmPay的关键方法payResultFalse 4. adb logcat 或者androidstudio 查看该进程的日志,发现以下日志 com.mf

[Android 逆向]Xposed 破解 切水果大战原版.apk

代码 public class Main implements IXposedHookLoadPackage { boolean flag = false; @Override public void handleLoadPackage(XC_LoadPackage.LoadPackageParam

【Android逆向】frida 破解 滚动的天空

1. apk 安装到手机中 2. 玩十次之后,会提示 充值 3. adb shell dumpsys window | grep mCurrentFocus 查看一些当前activity是哪一个 是 AppActivity 4. 阅读代码,感觉是unity3d做的游戏 5. apk拖入到jadx中,

【Android逆向】滚动的天空中插入smali日志

1. 编写一个MyLog.java 放到一个android工程下,编译打包,然后反编译拿到MyLog的smali代码 package com.example.logapplication; import android.util.Log; public class MyLog { public st

【Android逆向】frida hook so 函数

1. apk来自52pojie 链接:https://pan.baidu.com/s/1vKC1SevvHfeI7f0d2c6IqQ 密码:u1an 2.apktool反编译apk,拿到so文件 java -jar ../apktool_2.2.4.jar d app-debug.apk 3. 用j

【Android逆向】破解黑宝宝apk,绕过签名校验

这是52pojie的一道题,实现输入任何密码都可以登录成功 他知道你最近在学习Android逆向 他想在游戏上线前让你测试一下他新加的签名验证是否能防住别人的破解。 下面是李华编写的黑宝宝apk 链接:https://pan.baidu.com/s/1h6pX2ARE3qtiKiYbcnJ-3g 密