前言最近学了点frida-windows想到了litctf最后一道题可以主动调用来获取flag 但大多是用的ce 我突发奇想试试frida 水一下
前置内容省略了 大体的思路就是主动调用
1234567891011121314151617181920212223242526272829303132333435363738394041424344var baseaddres =Process.findModuleByName("GameAssembly.dll")console.log(baseaddres);const RobbieGetFlag = new NativeFunction( baseaddres.base.add(0x7A52A0), 'int64', // __int64 返回类型 [] // 无参);try { // 调用函数 const result = RobbieGetFlag(); // 将返回的int64转换为字符串 // 方法1:直接显示 ...
lit的时候忙其他的去了只能含泪复现 rc4的附件不知道丢哪了 整体的难度还行
FeatureExtraction
将我们的输入处理为32位
发现到key
进入加密函数观察加密流程
搞到密文
理解加密流程 解密就简单了
123456789101112131415161718key = [0x4C, 0x69, 0x74, 0x43, 0x54, 0x46, 0x32, 0x30, 0x32, 0x35]enc = [0x1690, 0x3E58, 0x6FF1, 0x86F0, 0x9D66, 0xAB30, 0xCA71, 0xCF29, 0xE335, 0xE492, 0xF1FD, 0xDE80, 0xD0C8, 0xC235, 0xB9B5, 0xB1CF, 0x9E9F, 0x9E86, 0x96B4, 0xA550, 0xA0D3, 0xA135, 0x99CA, 0xACC0, 0xBE78, 0xC196, 0xBC00, 0xB5C3, 0xB7F0, 0xB465, 0xB673, 0xB71F, 0xB ...
前言速刷一下angr 学习一下较为浅薄层面的angr应用
基础脚本12345678910111213141516171819202122232425262728293031323334353637import angrimport sysdef Go(): path_to_binary = "angr2" project = angr.Project(path_to_binary, auto_load_libs=False)#创建实例 initial_state = project.factory.entry_state()#得到程序的入口 simulation = project.factory.simgr(initial_state)#创建仿真模拟器负责管理程序运行的路径 print(project.arch)#输出框架 print(hex(project.entry))#入口 print(project.filename)#路径 def is_successful(initial_state): ...
你知道base吗
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051#include <stdio.h>#include <stdint.h> void encrypt (uint32_t* v, uint32_t* k) { uint32_t v0=v[0], v1=v[1], sum=0, i; uint32_t delta=0x9e3779b9; uint32_t k0=k[0], k1=k[1], k2=k[2], k3=k[3]; for (i=0; i < 32; i++) { sum += delta; v0 += ((v1<<4) + k0) ^ (v1 + sum) ^ ((v1>>5) + k1); v1 += ((v0<<4) + k2) ^ (v0 + sum) ^ ((v0&g ...
参考Unidbg 的基本使用(二)
hookfrida进入jadx
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091package com.sina.weibo.security;import android.util.Base64;import java.io.ByteArrayOutputStream;import java.security.Key;import java.security.KeyFactory;import java.security.PublicKey;import java.security.spec.X509EncodedKeySpec;import javax.crypto.Cipher;/* loaded from: classes.dex */public ...
参考Unidbg 的基本使用(一)
下载源码zhkl0228/unidbg: Allows you to emulate an Android native library, and an experimental iOS emulation
项目结构1234567891011121314151617181920212223242526272829303132├── README.md # 项目介绍和使用指南├── LICENSE # 开源许可证文件├── .gitignore # Git 忽略文件配置├── pom.xml # Maven 配置文件,定义了项目的依赖和构建配置├── mvnw # 脚本文件,用于 Maven Wrapper (Linux/Mac)├── mvnw.cmd # 脚本文件,用于 Maven W ...
参考资料[原创]Android加壳脱壳学习(1)——动态加载和类加载机制详解-Android安全-看雪-安全社区|安全招聘|kanxue.com
类加载器Android中的类加载器机制与JVM一样遵循双亲委派模式
双亲委派模式1.加载.class文件的时候,以递归的的形式逐级向上委托给父加载器ParentClassLoader去加载,如果加载过了,就不用在加载一遍
2.如果父加载器也没加载过,则继续委托给父加载器去加载,一直到这条链路的顶级,顶级classLoader判断如果没加载过,则尝试加载,加载失败,则逐级向下交还调用者来加载.
123456789101112131415161718192021protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException{ //1.先检查是否已经加载过--findLoaded Class<?> c = findLoadedClass(name); ...
链接Release v1.12.2 · luoyesiqiu/dpt-shell
很有意思的项目 我就试了fart可以成功
使用方法1java -jar dpt.jar -f 3.apk
效果
使用后
脱壳frida-dexdump
小黑盒失败
dumpdex失败
x1Login1234567891011private final void checkSecutity() { if (Secure.checkDebug()) { Toast.makeText(this, "Debugger Detected!", 0).show(); exit(); } if (Secure.checkRoot()) { Toast.makeText(this, "Root Detected!", 0).show(); exit(); } }
上来就是root的检测和调试的检测 好在java层 不然要炸缸 mt管理器去除一下调用就行
接着看
查看so
直接上frida看看怎么个事
1234567891011 Java.perform(function (){ let DecStr = Java.use(& ...
参考Android so层逆向分析入门 - Curz0n’s Blog
Android脱壳工具整理_apk脱壳工具-CSDN博客
ida为9版本
so分析静态注册的方法可以直接在导出表查询到 动态注册则是需要查看jni_onload函数进行分析
stringFromJNI为静态注册
test方法为动态注册
jni_onload第一个参数的类型是JavaVM* 面对错误可以手动修复
动态注册流程
123456789101112131415161718//第一步,实现JNI_OnLoad方法JNIEXPORT jint JNI_OnLoad(JavaVM* jvm, void* reserved){ //第二步,获取JNIEnv JNIEnv* env = NULL; if(jvm->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK){ return JNI_FALSE; } //第三步,获取注册方法所在Java类的引用 jclass clazz ...