重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
该篇文章主要介绍在Android逆向开始之前的 手机环境配置 。其中包括对手机进行 刷机 (根据所需的Android手机型号、Android系统版本进行刷机。这里我以nexus 5 android 6.0.1为例,其他Google系手机型号及刷其他Android版本系统都是类似的);第二个则是安装Android逆向分析 hook框架 (Xposed、frida)及一些常用的基础插件等。
我们提供的服务有:做网站、网站设计、微信公众号开发、网站优化、网站认证、舞阳ssl等。为近千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的舞阳网站制作公司
一、刷机前准备
二、开始对nexus 5刷机(Android 6.0.1)
需要使用低版本的platform-tools进行替代,具体的操作步骤,可以参考以下文章
三、刷入第三方recovery(TWRP)到新系统中
四、对刚刷完的Android系统进行root
五、安装Xposed框架、frida-server 及Android逆向分析中常见的插件
综上所述,该篇文章主要是使用Android官方的系统镜像进行刷机,然后安装配置Android逆向所需的框架及插件。在刷机的时候,我们也可以选择自己修改编译Android系统源码,再进行刷机,定制我们自己所需的分析环境。
更多精彩内容,请扫码关注以下公众号
用于android app的http/https网络抓包的主要有以下三个工具
由于这个知识点网上的资料比较多,我就不重复造车了,charles和burpsuite在linux下用,windows下推荐使用fiddler,功能比较强大,写的比较好的文章:
fiddler Android下https抓包全攻略
另外的方法可见:
先输入”adb shell”,然后输入”su root”获取root权限。
接着输入” chmod 777 /data/local/tmp/android_server” 给android_server加上相应的权限。
接着输入” /data/local/tmp/android_server”启动android_server。
如下图所示:
输入”adb forward tcp:23946 tcp:23946”进行tcp端口转发
命令,启动所要调试的Activity。
app会弹出”Waitting for debugger”对话框,如下图所示:
点击”Debug options”按钮,在”Suspend on process entry point”, ”Suspend on thread start/exit”, ”Suspend on library load/unload” 等选项的前面打上勾,如下图所示:
点击”ok”后会在以下对话框的hostname中填上”localhost”
在弹出的”Choose process to attach to”窗口中找到”com.example.testjniso”进程,选中该进程,然后点击”ok”按钮。
其中可以看到com.example.testjniso进程的端口为8700。
如下图所示:
在ida弹出的”Add map”窗口中,一律点击”Cancle”按钮。
点击ida中的暂停调试按钮,暂停当前的调试,如下图所示:
右击libTestJniSo.so文件,在弹出的框中点击”Jump to module base”,跳转到libTestJniSo.so文件的起始地址。
按下Alt+T,弹出查找对话框中输入” Java_com_example_testjniso_MainActivity_helloFromJni” 如下图所示:
点击”ok”按钮后,即可跳转到 Java_com_example_testjniso_MainActivity_helloFromJni 函数所在的起始地址。
然后在地址处下断点:
再按F9重新开始调试,点击app中的”点击加载so文件”按钮重新加载libTestJniSo.so,即可看到程序成功地停在了断点处:
到此处就可以正常地调试so文件了。
Linker是什么?
Linker就是/system/lib/linker,它是进程启动时第一个加载的模块,它负责管理elf可执行文件以及各个so文件的加载执行,还参与了调试的一些东西。通俗地说,它是一个elf文件的解释器。它可以加载elf可执行文件及so动态库。
在android 5.0下,不能执行android_server是因为android5.0自带的linker不支持加载非pie的elf文件,但如果自己实现一个可以加载pie的linker,不就可以解决这个问题了吗?对的,就是酱紫,补上自己的自定义linker在附件.
首先,逆向分析是一门技术,也是一门艺术。
其次,安卓逆向同样可细分为应用层APK逆向、安卓设备框架、内核驱动等逆向、基于安卓的硬件产品逆向等。此处假定楼主说的是第一种逆向。
应用层的逆向分析根据需求的不同,又可细分成APK流程逆向与功能逆向。
流程逆向通常是指简单的对APK运行流程进行分析,此类分析通常可以使用将APK置于沙盒环境中运行捕捉并查看运行结果。这种逆向需求通常不是很多,典型的工种有杀软厂商的病毒分析工程师。
功能逆向相比流程逆向则困难得多。但需求比较普遍。实际逆向分析过程中对功能实现的理解,在很大程度上取决于逆向人员相关的软件开发知识。比如,分析Android程序的JAVA代码就需要掌握基本的Android软件开发的知识。分析so库的代码就需要了解C/C++相关的so库开发的知识。除了基本开发相关的能力外,逆向分析人员还需要具备以下知识:
ARM/X86/MIPS汇编语言-分析so库时可能需要阅读大量的反汇编代码。
如下:
1、丰生强《Android软件安全权威指南》,2019年3月出版。
2、姜维《Android应用安全防护和逆向分析》,2018年1月出版。
3、丰生强《Android软件安全与逆向分析》,2013年2月出版。
1和3作者都是丰生强(非虫大神),里面有很多相同的内容,但1比3新增了这六年间新出的技术,2中作者说有几章是非虫的支持。
介绍
安卓(Android)是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。
Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。