android逆向面试几个问题点。

Posted 小道安全

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android逆向面试几个问题点。相关的知识,希望对你有一定的参考价值。

1.dex整体加固的脱壳方法

dex加固算是第二代主流加固工,下面是常见脱壳方案。
1.app运行后,直接在app内存中暴力搜索 dex\\n035,然后进行dump数据。
2.dvmDexFileOpenPartial通过hook这个函数解密。

2.ptrace注入流程

主要就是通过利用系统ptrace函数进行实现的,目前主流的frida注入框架也是这个原理实现的。
1.attach到远程进程;
2.保存寄存器环境
3.远程调用mmap函数分配内存空间
4.想远程进程写入加载模块名称和调用函数
5.通过dlopne打开注入模块
6.dlsym获取调用函数地址
7.远程调用注入模块的函数
8.恢复寄存器
9.剥离远程进程

3.zygote注入流程

zygote注入的代表产品就是xposed注入框架。
zygote注入主要就是通过修改对应的可执行文件其实就是app_process这个文件,然后实现全局注入
1.把自己实现要进行注入的so库拷贝到/system/lib/下面
2.把这个so库的文件名追加到/system/etc/public.libraries.txt里

4.inline hook实现原理

主要原理:通过修改函数头修改成jmp指令,跳转到进行自定义实现的函数,自定义函数就是自己想执行的逻辑,执行完自己的逻辑再跳转回来到跳转前的原函数。

5.frida的hook原理

frida 注入是基于 ptrace实现的。frida 调用ptrace向目标进程注入了一个frida-agent-xx.so文件。后续各种hook操作是这个so文件跟frida-server通讯实现的。

6.xposed注入原理

安卓所有的APP进程是用 Zygote(孵化器)进程进行fork创建并启动的。
Xposed替换了 Zygote 进程对应的可执行文件/system/bin/app_process,每启动一个新的进程,都会先启动xposed替换过的文件,都会加载xposed相关代码。

以上是关于android逆向面试几个问题点。的主要内容,如果未能解决你的问题,请参考以下文章

学习Android安全和逆向开发的路线总结

Android 逆向Android 逆向基本概念 ( 定位内存中的修改点 | 基址寻址法 | 搜索定位法 )

Android 逆向整体加固脱壳 ( 脱壳点简介 | 修改系统源码进行脱壳 )

Android 逆向逆向修改游戏应用 ( 分析应用结构 | 定位动态库位置 | 定位动态库中的修改点 | 修改动态库 | 重打包 )

Android 逆向APK 加壳脱壳现状 | 判断 APK 是否加壳 | APK 逆向流程

Android 逆向修改运行中的 Android 进程的内存数据 ( 使用 IDA 分析要修改的内存特征 | 根据内存特征搜索修改点 | 修改进程内存 )