objection简介 objection是基于frida的命令行hook集合工具, 可以让你不写代码, 敲几句命令就可以对java函数的高颗粒度hook, 还支持RPC调用。可以实现诸如内存搜索、类和模块搜索、方法hook打印参数返回值调用栈等常用功能,是一个非常方便的,逆向必备、内存漫游神器。 项目地址 安装:pip install objec…
常见防护手段 主要功能描述SO加壳对C/C++源码编译出来的SO文件进行加壳,使SO文件无法正确反编译和反汇编。SO源码虚拟化保护将原始汇编指令翻译为自定义的虚拟机指令,跳转到自定义的虚拟机中执行,每次保护生成的虚拟机指令随机,且对虚拟机解释器再度混淆SO防调用对SO文件进行授权绑定,防止SO文件被非授权应用调用运行。SO Linker对整个SO文…
so加载流程 函数名描述android_dlopen_ext() 、dlopen()、do_dlopen()这三个函数主要用于加载库文件。android_dlopen_ext 是系统的一个函数,用于在运行时动态加载共享库。与标准的 dlopen() 函数相比,android_dlopen_ext 提…
下载:通过网盘分享的文件:IDA_Pro_7.7.7z链接: https://pan.baidu.com/s/18QuV4wu19pF6oXssNVAbRQ?pwd=vehq 提取码: vehq 安装后请看目录内的使用说明文件操作 JNI的两种注册方式 JNI有静态注册和动态注册两种,静态注册在分析的比较简单,动态注册的话就需要先了解下注册步骤。 …
常见寻址方式 寻址方式描述立即数寻址直接使用立即数值作为操作数,例如:MOV R0, #5寄存器直接寻址使用寄存器中的值作为操作数,例如:MOV R0, R1寄存器间接寻址使用寄存器中的值作为内存地址,访问该地址中的数据,例如:LDR R0, [R1]寄存器相对寻址使用寄存器中的值加上一个立即偏移量作为内存地址,例如:LDR R0, [R1, #4…
动态调试步骤 方法一: 在AndroidManifest.xml里添加可调试权限,但是有些app在启动时会检查是否为debug模式。 android:debuggable="true" 方法二: XappDebug模块hook对应的app GitHub - Palatis/XAppDebug: toggle app debuggable 方法三: …
广告就是一个Activity 安卓四大组件 组件描述Activity(活动)在应用中的一个Activity可以用来表示一个界面,意思可以理解为“活动”,即一个活动开始,代表 Activity组件启动,活动结束,代表一个Activity的生命周期结束。一个Android应用必须通过Activity来运行和启动,Activity的生命周期交给系统统一管…
寄存器 在smali里的所有操作都必须经过寄存器来进行:本地寄存器用v开头数字结尾的符号来表示,如v0、 v1、v2。 参数寄存器则使用p开头数字结尾的符号来表示,如p0、p1、p2。特别注意的是,p0不一定是函数中的第一个参数,在非static函数中,p0代指“this",p1表示函数的第一个 参数,p2代表函数中的第二个参数。而在static函…
结构 apk 全称 Android Package,它相当于一个压缩文件,只要在电脑上将apk后缀改为zip即可解压。 文件注释assets目录存放APK的静态资源文件,比如视频,音频,图片等lib 目录armeabi-v7a基本通用所有android设备,arm64-v8a只适用于64位的android设备,x86常见用于android模拟器,其…
使用ida打开so文件,会看到下方提示,这也算是UPX壳的一个特征 下载脱壳工具,解压,将加固的so文件放到文件夹目录下 下载地址:Release UPX 3.96 · upx/upx · GitHub 运行命令脱壳 upx -d 08.so 现在目录下原先的so文件就已经脱壳成功了。