Android 逆向实战

本文详细介绍了Android逆向工程的各个步骤,包括使用apktool、Jadx等工具进行反编译,通过打开调试开关、静态逆向和动态逆向分析代码,利用IDA进行.so文件的逆向工程,并探讨了解决反调试策略以及如何进行脱壳逆向。内容涵盖了从基本的反编译到复杂的动态调试和代码修改,是Android逆向学习者的实用教程。
摘要由CSDN通过智能技术生成

Android逆向实战


本文由 Luzhuo 编写,转发请保留该信息.
原文: https://blog.csdn.net/Rozol/article/details/88755130


反编译工具

相关工具

另外还需要一些基础知识: smali语法arm指令NDK开发

apktool

反编译:

使用该工具最好是去Github下去源码, 放到Eclipse里执行, 一旦反编译报错可以立即修改源码解决问题.

1.下载源码: https://github.com/iBotPeaches/Apktool

2.Eclipse安装Gradle插件

  • 安装Gradle: https://gradle.org
  • 安装Gradle插件: Help -> Eclipse Marketplace -> 输入buildship -> 搜索 -> Install -> 重启Eclipse
  • 配置Gradle: Eclipse -> Project -> Properties -> Gradle -> Gradle user home配置Gradle路径 -> OK

3.导入项目

  • File -> Import -> Existing Gradle Project(Gradle) -> 选择apktool -> Finish
  • 如果你还没有配置Gradle的情况下导入了apktool, 那么你只需右键项目 -> Gradle -> Refresh Gradle Project 即可.

4.运行apktool

在brut.apktool包下的Main类下的main入口函数手动构建一个命令, 然后运行即可.

args = new String[]{
   "d", "C:\\apk\\xxx.apk", "-o", "C:\\apk\\xxx"};

回编译:

1.进行回编译:

args = new String[]{
   "b", "C:\\apk\\xxx1", "-o", "C:\\apk\\xxx_build.apk"};

2.签名:

jarsigner -verbose -keystore "C:\apk\case.key.jks" -signedjar "C:\apk\xxx_build_ok.apk" "C:\apk\xxx_build.apk" key0

-signedjar参数:

  • 1.签名后apk存放路径
  • 2.未签名apk路径
  • 3.证书别名

3.安装

逆向操作

打开调试开关

想要调试应用, 打开调试开关这是破解步骤的第一步.

不反编译的情况下:

Android配置信息放在 /system/build.prop 文件里

C:\Users\LZLuz>adb shell
shell@S658t:/ $ su
root@S658t:/ # cat /system/build.prop |grep ro
# begin build properties
ro.build.id=KOT49H
ro.build.display.id=VIBEUI_V2.0_1512_7.17.1_ST_S658t
ro.build.version.incremental=VIBEUI_V2.0_1512_7.17.1_ST_S658t
ro.custom.build.version=VIBEUI_V2.0_1512_7.17.1_ST_S658t
ro.build.version.sdk=19
ro.build.version.codename=REL
ro.build.version.release=4.4.2
ro.build.date=Mon Feb  9 21:38:28 CST 2015

ro开头的属性表示只读, 不可修改

可以通过命令单独获取某值

root@S658t:/ # getprop ro.product.model
Lenovo S658t

默认配置信息

root@S658t:/ # cat default.prop
#
# ADDITIONAL_DEFAULT_PROPERTIES
#
ro.secure=1
ro.allow.mock.location=0
persist.mtk.aee.aed=on
ro.debuggable=0
ro.adb.secure=1

这里的ro.debuggable=0为0表示判断应用中的AndroidManifest.xml文件中manifest标签是否有android:debuggable="true"属性, 有则可以调试; 若为1, 表示所有程序均可调试.

接下来我们想办法修改这个值, 改为1:

我们使用ptrace注入到init进程, 修改内存中的属性值, 只要该进程不重启就会一直有效, 即使重启了, 再操作一遍即可.

1.下载mprop工具
2.拷贝到设备中

adb push C:\Code\mprop /sdcard/
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值