9月随手记

1.z3 是由微软研究院开发的一款高性能的约束求解器,主要用于解决布尔逻辑(Boolean Logic)、整数、实数和位向量等问题。可以用来验证公式,打CTF。

注意:z3 是一个约束求解器,它可以找到给定的约束条件下的一个解(如果存在),但并不能保证找到的解是唯一的

github地址:GitHub - Z3Prover/z3: The Z3 Theorem Prover

from z3 import *

# 创建两个整数变量
x = Int('x')
y = Int('y')

# 创建一个求解器
solver = Solver()

# 添加约束条件
solver.add(x > 5)
solver.add(y < 10)

# 检查是否存在解
if solver.check() == sat:
    # 获取解
    model = solver.model()
    print("x =", model[x])
    print("y =", model[y])
else:
    print("No solution found.")

2.  4g代理

sslocal(socket客户端)->nps(内网穿透服务端)->npc(内网穿透客户端)->ssserver(socket服务端)->4g(手机端)

3.vue-cli-service build 默认的环境是production

4.逆一个app,发现它已经被别人加了一层引流,app原本无壳无混淆,引流的具有混淆严重,又是switch控制流平坦化,又是乱码字符的,好像他通过外链控制是否引流,外链的内容没有加密。于是上frida试一把,打印堆栈居然打印到androidx.print.**类,吓我一跳,一直告诉我frida坏了,最后是在找不到相关信息,就看了下还真是,伪装成系统类,真是老6啊。里面大量的控制流平坦化,不可见字符。最终定位到这个类(public class b extends AsyncTask ),由于是AsyncTask异步执行,线索又断了,后来查看api,发现他是实例化调用execute方法,于是就hook它,定位到最终的地方。

5.init_array和_init的demo(比JNI_OnLoad加载时间更早,可能在这里面有暗桩)

#include <stdio.h>

void myInit1() {
    printf("Init function 1\n");
}

void myInit2() {
    printf("Init function 2\n");
}

void _init() {
    printf("_init function\n");
}

// 定义 init_array
typedef void (*InitFunction)();
__attribute__((section(".init_array"))) InitFunction initArray[] = {myInit1, myInit2};

执行顺序为

_init function

Init function 1

Init function 2

6.1⃣️:用frida hook native时,有的方法是jni方法,需要将jstring转成cstring打印。也就是jni的基本类型,需要调用env,jni的相关api转为c对象,才能打印和调用。

2⃣️:jni主动调用时,参数构造有两种,一种是Java.vm.getEnv(),第二种是直接hook得到别人的。同样在java层,当实例不好构造时,要不java.choose,从内存里面获取,要不就hook得到别人的。也就是targetClass.implementation。

3⃣️:native层打印和构造,nativePointer类 (ptr("aaa").readCString()) 【https://frida.re/docs/javascript-api/#nativepointer】Memory类 Memory.allocUtf8String(str) 【JavaScript API | Frida • A world-class dynamic instrumentation toolkit

7.frida-trace的运用【frida-trace | Frida • A world-class dynamic instrumentation toolkit

frida-trace -U -j "*InnerSignImpl*!*" "饿" 【-j JAVA_METHOD, --include-java-method=JAVA_METHOD include JAVA_METHOD】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值