OLLVM源码编译和使用 一、准备阶段1.1 工具配置编译ollvm需要用到的工具如下: cmake gcc 8.x g++ 8.x gcc和g++的版本得是8.x的版本,通过如下指令安装: 1sudo apt-get install gcc-8 g++-8 -y 如有多个版本的gcc和g++,需配置优先级: 12345sudo update-alternatives --install /usr/bin/gcc g 2024-04-17 LLVM and OLLVM #OLLVM #代码混淆
NDK开发学习笔记 一、NDK项目新增内容使用Android Studio直接创建一个默认的NDK项目,会发现新增了如下部分: 多了加载本地库的代码和本地库中方法的声明代码。 在项目的main目录下多了cpp目录,包含CMakeLists.txt配置文件以及native-lib.cpp代码实现文件。 buid.gradle配置文件中多了native层的编译配置。 二、NDK模板代码分析借助上面这个模板 2023-12-26 Android #NDK
Frida入门练习(二) - KGB Message 题目附件:tlamb96/kgb_messenger: An Android CTF practice challenge (github.com) MainActivity 这里我们需要跟踪一下R.string.User,直接点击,可以知道对应的资源id为: 1public static final int User = 0x7f0d0000; 根据这个资源id在resources 2023-12-21 Android #Frida
Frida入门练习(一) - 七层关卡 附件:见[原创]frida基础 闯关训练 七层关卡-Android安全-看雪-安全社区|安全招聘|kanxue.com LoginActivity onClick()方法中判断了输入不能为空,且要满足LoginActivity.a(obj, obj).equals(obj2)才行,方法如下: 很简单,也就是密码是账号的HmacSha256加密,加密使用的密钥是账号本身。 这里我们使用frida 2023-12-20 Android #Frida
Frida的集成工具:Objection的使用 指令选项1objection --help Objection连接12objection -g <packagename> exploreobjection -N -h <phone's ip> -p <port> -g <packagename> explore # 指定ip与端口连接 连接成功后是如下画面: 按空格可以获取命令提 2023-12-19 Android #Frida
Python中frida库使用 启动frida服务包名附加1234567891011import fridaimport sysjscode = ''' '''device = frida.get_usb_device()# 获取usb连接的测试机process = device.attach("设置")# 包名附加进程,可通过frida-ps 2023-12-18 Android #Frida
Frida Java层Hook学习笔记 Java层Hook简单的代码框架: 1234567891011function main(){ //使用Java平台,Java层hook在Java.perform中执行 Java.perform( //代码逻辑 function(){ ... } )}//调用main方法setImm 2023-12-17 Android #Frida
Android第一二代壳的脱壳点分析 只讲ART下的脱壳,DVM太过时了 一、脱壳点分析编写过Android第一二代加固壳的可以知道,无论是通过系统的类加载器加载的,还是通过自定义类加载器加载的,无一例外,最终都逃不过创建DexFile对象: 123456789101112131415161718192021222324252627282930313233343536373839404142434445class DexFile 2023-12-12 Android #Android脱壳
Android第二代加固壳的原理及实现 —— 不落地加载 一、对第一代壳的改良在第一代加固壳中,会将源程序APK存储到文件系统中,然后再通过DexClassLoader动态加载。这种落地加载方式存在很大问题,一是容易在文件系统中获取到源程序APK,二是两次加载源程序APK到内存中,效率低。 第二代壳就是为了解决上述问题,做到不落地加载,即不使用文件系统作为中转站,而是直接将内存中的源APK字节码进行加载。 那么问题就来了,怎样解决加载内存dex的难题呢? 2023-12-10 Android #Android加固
JNI原理 一、前言在 Android 逆向过程中,常常可以见到 java 层使用 native 函数,但 native 函数并没有在 java 层实现,而是在 native 层实现,java 层通过加载库文件来正常使用该函数。java 层之所以可以使用 native 层实现的函数,是因为 JNI 的存在。 如果我们进一步探究 so 文件,可以发现有的 so 文件中含有 JNI_OnLoad 函数,而有的没有 2023-12-10 Android #Android #Android源码解析 #JNI