从0开始的安卓逆向入门

前言

尝试安卓入门,网上没有全流程的基础教程,自己拼凑了多个教程,总体上比较详细。希望能提供帮助

整体思路是,先查询apk信息,然后脱壳,然后反汇编出jar包,最后逆向出源代码。

工具分别为apkscan-pkid、frida-dexdump、dex2jar、JD GUI 下载路径在后文给出。

apkscan-pkid 查壳

[1198]ApkScan-PKID 查壳工具_安卓查壳_周小董的博客-优快云博客

apk文件其实就是个归档文件压缩包,把应用相关的源码、资源文件、配置文件等等都归档打包,直接解压之后就能得到app的dalvik指令集dex文件,然后再反编译为smali,还可以再反编译为Java,这样就几乎等同于拿到了app就能拿到可读性还蛮清晰的源码。

Android Dex文件加壳原理:Android APK加壳过程中,牵扯到三个角色:加壳程序(加密源程序为解壳数据、组装解壳程序和解壳数据)、解壳程序(解密解壳数据,并运行时通过DexClassLoader动态加载)、(源程序)需要加壳处理的被保护代码

Dex文件结构:Dex文件结构_Jack_Jia的博客-优快云博客

APK加壳原理简述:APK加壳原理简述_amurocrash的博客-优快云博客

Android APK加壳技术方案【1】:Android APK加壳技术方案【1】_android 加壳保护_Jack_Jia的博客-优快云博客

Android APK加壳技术方案【2】:Android APK加壳技术方案【2】_need invoke bind before use_Jack_Jia的博客-优快云博客

Android4.0内存Dex数据动态加载技术:Android4.0内存Dex数据动态加载技术_Jack_Jia的博客-优快云博客

ApkScan-PKID 查壳工具更多请访问:www.legendsec.org

下载: 百度网盘 请输入提取码 密码: wefd

ApkScan-PKID查壳工具+脱壳(搬运) - 『逆向资源区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

Frida-dexdump脱壳

[原创]frida-dexdump简单脱壳--菜鸟教程,大神勿喷-Android安全-看雪-安全社区|安全招聘|kanxue.com

frida-dexdump 真机&模拟器 一键安装+执行 - 简书

https://github.com/frida

记第一次frida-dexdump脱壳 - 『移动安全区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

前置

ADB安装

adb的全称为Android Debug Bridge,就是起到调试桥的作用

adb是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的android设备(如G1手机).  它的主要功能有:

* 运行设备的shell(命令行)

* 管理模拟器或设备的端口映射

* 计算机和设备之间上传/下载文件

* 将本地apk软件安装至模拟器或android设备

windows下载安装adb(极其简单)_adb工具下载windows-优快云博客

配置环境变量

E:\adb\platform-tools

ADB连接Android设备

参考ADB连接Android设备的三种方法_adb怎么连接_c1063891514的博客-优快云博客

连接方式有三种方法:

一、WiFi连接(手机与pc同一个局域网下)

与电脑在同一局域网内,Android设备连接WiFi,然后adb命令#adb connect

二、USB数据线连接

此种连接要有相应的驱动才行(应该安装phoenixsuit就可以通过数据线来通过adb连接设备,有的不用安装)https://download.youkuaiyun.com/download/c1063891514/10589989

三、串口连接

使用串口设备与电脑连接。

ADB连接夜神

【新手指导】夜神安卓模拟器adb命令详解_夜神安卓模拟器新手帮助页

安装夜神安卓模拟器后,电脑桌面会有“夜神模拟器”的启动图标,鼠标右键--打开文件所在的位置,就会进入***\Nox\bin,比如小编的路径是C:\Program Files (x86)\Nox\bin,然后可以在该路径下找到nox_adb.exe

E:\Nox\bin 这里也有一个自带的adb

如果指定在62001 上安装一个apk,那么请输入:adb -s 127.0.0.1:62001 install D:\\QQ.apk

输入nox_adb.exe connect 127.0.0.1:62001即可以连接到adb

打开夜神模拟器,打开设置,调成手机模式,初次进入的话,进入设置,点击版本号5次,可以激活使用开发者模式,进入后打开USB调试功能

adb connect 127.0.0.1:62001

ADB使用

adb使用-详细教程(Awesome Adb)_action":"bind_device","info":{"model_number":"s10"_Deryou的博客-优快云博客 这个文章内容很多

adb start-server adb kill-server adb version adb devices //查询已连接设备/模拟器 adb shell pm list packages //所有应用 adb shell pm list packages -s //系统应用 adb shell pm list packages -3 //第三方应用 adb shell pm list packages mazhuang //包名包含字符串 mazhuang

执行adb shell后执行getprop ro.product.cpu.abi获处理器架构

安装frida-dexdump

pip3 install frida-dexdump -i http://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com

速度还是挺慢的,在下图这里卡了很久

换成pip3 install frida-dexdump

A.frida-16.1.4-cp37-abi3-win_amd64.whl.metadata

B.X86架构

C.选择server

D.选择android

根据上述在Releases · frida/frida · GitHub选择

frida-server-16.1.4-android-x86.xz

下载后解压。执行

E:\downloads\frida-server-16.1.4-android-x86 adb push .\frida-server-16.1.4-android-x86 /data/local/tmp

然后adb shell后执行 chmod 777 frida-server-16.1.4-android-x86 给可执行权限。

adb shell上运行frida-server。需要root身份(su)运行。

cd /data/local/tmp ./frida-server-16.1.4-android-x86

 windows端执行脱壳命令 :

frida-dexdump -U -f com.app.pkgname

frida-dexdump 参数:\

-o OUTPUT, --output OUTPUT  Output folder path, default is './/'.\

-d, --deep-search           Enable deep search mode.\

--sleep SLEEP               Waiting times for start, spawn mode default is 5s.

下面要找一个测试的app来脱壳

ctf例题或者教程,搜索

CTF逆向-[网鼎杯 2020 青龙组]bang-安卓脱壳逆向:frida-dexdump导出得到源码_serfend的博客-优快云博客

[网鼎杯 2020 青龙组]bang

先测试下是否有壳。

E:\downloads\ApkScan-PKID查壳工具

先把apk放到模拟器里面

直接拖过去就可以

frida-dexdump -FU 导出当前模拟器中前台运行的应用。 frida-dexdump -U -f com.app.pkgname 导出指定包名的应用

发现导出前台失败了,那试一下指定包名

adb shell pm list packages -3

先看一下第三方的包 : package:com.example.how_debug

frida-dexdump -U -f com.example.how_debug

报错:Failed to spawn: need Gadget to attach on jailed Android; its default location is: C:\Users\ali\AppData\Local\Microsoft\Windows\INetCache\frida\gadget-android-arm64.so

搜索发现是 因为frida server没有正常启动

因为刚刚重启了一下模拟器,所以重新启动frida server

adb shell >cd /data/local/tmp >./frida-server-16.1.4-android-x86

frida-dexdump默认路径:Output folder path, default  is './/'

./how_debug

find / -name "how_debug"

没找到,但找到了https://github.com/hluwa/frida-dexdump

深入 FRIDA-DEXDump 中的矛与盾 后续进行学习

本打算重新指定目录跑一下

frida-dexdump -o /data/local/tmp -U -f com.example.how_debug

发现日志里面写了,存储在本机上。

到这一步,脱壳就算完成了。

下一步是逆向出源码

d2j-dex2jar.bat转换为jar包,然后用jd-gui.exe得到源码

dex2jar

下载https://github.com/pxb1988/dex2jar

E:\000CTF工具\dex2jar-v2.3

d2j-dex2jar.bat

./d2j-dex2jar.bat file\classes.dex

打印了很多日志。

生成了classes-dex2jar.jar

JD GUI

下载:

https://github.com/java-decompiler/jd-gui/releases

JD-GUI - Download & Review

分别是jar包版和exe版本。

E:\000CTF工具\jd-gui-1.6.6-min.jar

可以把之前的classes-dex2jar.jar拖过来

flag{borring_things}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值