Android逆向系列之动态调试(五)–gdb调试

111111111

一、环境准备
ndk、模拟器(需要root权限,可以使用命令: adb root)

二、调试准备
1.gdbserver
找到gdbserver,路径是 ndk目录下的prebuilt文件夹,其中有三个Android开头的文件夹,选择对应自己的CPU,进入文件夹即是gdbserver(这里是选择android-arm/gdbserver)
接下里将gdbserver传到模拟器中,命令 : adb push gdbserver /system/bin (注意这里的路径,第一个需在当前目录下,否则需带绝对路径,第二个可自己选择)

问题分析:这里push到/system/bin可能会报错
Read More

Android逆向系列之动态调试(四)–代码注入(JDB调试)

111111111

一、环境
本次实验需要的环境有JDK、模拟器、adb
破解思路:通过jdb动态调试找到正确的变量,然后进行代码注入,修改Try again 为Hacked!!

二、准备
老操作,反编译APK,然后查看AndroidManifest.xml中是否有 android:debuggable=”true” 没有则在相应位置添加
启动模拟器或连接真机,然后安装apk –> adb install debug.apk
Read More

Android逆向系列之动态调试(一)–Smali注入

111111111

一、Smali注入
Smali注入又称Smali插桩(Smali Instrumentation),WIKI解释:它是在保证被测程序原有逻辑完整性的基础上在程序中插入一些探针(又称为“探测仪”),通过探针的执行并抛出程序运行的特征数据,通过对这些数据的分析,可以获得程序的控制流和数据流信息,进而得到逻辑覆盖等动态信息,从而实现测试目的的方法。这里我们注意几个词,保证程序原有逻辑性、插入探针、抛出特征数据。这几个词也是我们samli注入需要关注的几个关键点所在。

二、调试环境
可以使用Apktool+eclipse(AS),或者Netbean
这里我的eclipse是比较老的版本,可能部分功能 新版对应有所不同,但这并不影响
Read More

Android逆向系列之静态分析(零)–入门篇

111111111

一、什么是静态分析

静态分析是指在不运行代码的情况下,采用词法分析、语法分析等各种技术手段对程序文件进行扫描从而生成程序的反汇编代码,然后阅读反汇编代码来掌握程序功能的一种技术。

静态分析Android程序分以下几种:

Java层:

(1)阅读反汇编生成的Dalvik字节码助记符,即分析smali文件(无损)

(2)阅读反汇编生成的Java源码(有损)

Native层:

(3)阅读反汇编生成的SO文件ARM汇编代码 (无损)

(4)阅读反汇编生成的so文件的c/c++源码 (有损)

Read More

Android逆向系列之Smali语法篇

androidd

Dalvik字节码

Dalvik是google专门为Android操作系统设计的一个虚拟机,Dalvik VM是基于寄存器的,而Java VM是基于栈的;Dalvik有特定的文件执行格式dex(dalvik executable),有点类似于机器码,比如0110代表move v0, v1,而这里的move v0, v1就是我们所说的smali代码。

下载

Read More