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
InMemoryDexClassLoader加载内存dex的流程 一、前言在之前分析dex文件加载流程中(dex文件加载流程(一)(二)(三)),我们分析过了DexClassLoader和PathClassLoader这两个类加载器加载dex的流程。它们两个都是用来记载文件dex的,但是在Android 8新增了InMemoryDexClassLoader,专门用于加载内存dex,接下来我们就根据源码来剖析内存dex的加载流程。 二、InMemoryDexCla 2023-12-06 Android #Android源码解析
对Java反射方法进行封装 在这之前,我们需要分析一下封装Java反射方法是为了干什么。 显然在Android第一代加固壳的原理及实现一文中,我们重复地使用到了Java反射来获取类、字段、方法,无一例外,获取它们的最终目的是获取字段值、修改字段值、调用方法。为了实现这些目的,我们写了很臃肿的代码,因为太多重复的反射获取,所以我们可以将这些代码封装起来,形成一个自定义类,这样一来,加固的代码就可以变得轻巧了,且这个封装类以后还 2023-12-04 Android #Java反射