frida怎么hook真实值
本帖最后由 youduck7 于 2026-5-25 19:32 编辑我在复现PCTF2025的eazyflag这一题的时候,(之前做出来,现在整理笔记需要用到)附件在最后
就是一道将 flag 给到 firstLayerEncrypt 和 secondLayerEncrypt 两个方法后
跟 bc273817ab96cf4a4206321199dbe36140e1dee3d7dbc89ea76f7e 比较一下
secondLayerEncrypt 是native层用ida打开是一个rc4,那个key 我没找到,但是可以利用异或或对称来解决
然后就是主角 firstLayerEncrypt 了
public byte key1 = 67;
public byte key2 = 33;
private byte[] firstLayerEncrypt(String str) {
if (str == null || str.isEmpty()) {
return new byte;
}
byte[] bytes = str.getBytes();
int[] iArr = new int;
for (int i = 0; i < bytes.length; i++) {
bytes = (byte) (((((bytes & UByte.MAX_VALUE) ^ this.key1) & 255) + this.key2) & 255);
}
return bytes;
}
这里的key1和key2不是静态的,但是我用frida没有打印出来
这是hook.js
Java.preform(()=>{
var class_Main = Java.use("f.f.eazyflag.MainActivity")
class_Main.firstLayerEncrypt.implementation = function(str){
var k1 = this.key1.value
var k2 = this.key2.value
console.log(k1)
console.log(k1)
return this.firstLayerEncrypt(str)
}
})
有疑问的就是,我又是运行出来的是 17 18 ,但是有时候是 67 33 ,代码什么的都没变,原本都是 67 33的,刚才运行出个17 18 退出再来一遍是67 33
通过网盘分享的文件:app-release.apk
链接: https://pan.baidu.com/s/1XwTpCavyWhv_VtgrKK7OQg?pwd=2222 提取码: 2222
页:
[1]