首页
社区
课程
招聘
[原创]记一次基于unidbg模拟执行的去除ollvm混淆
发表于: 2023-5-3 23:00 72364

[原创]记一次基于unidbg模拟执行的去除ollvm混淆

2023-5-3 23:00
72364

传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!!

最后于 2023-5-3 23:04 被乐子人编辑 ,原因: 排版
上传的附件:
收藏
点赞 84
打赏
分享
最新回复 (67)
雪    币: 9064
活跃值: (10482)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
大佬,请给个案例so
2023-5-4 10:26
3
雪    币: 361
活跃值: (8070)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
666
2023-5-4 10:28
0
雪    币: 151
活跃值: (1470)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
大佬,请给个案例so
2023-5-4 10:41
0
雪    币: 187
活跃值: (2718)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
精彩
2023-5-4 10:54
0
雪    币: 4018
活跃值: (7315)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
大佬,请给个案例so
2023-5-4 10:59
0
雪    币: 102
活跃值: (4071)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
nice ,mark
2023-5-4 11:28
0
雪    币: 4511
活跃值: (7267)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
8
样本随便找几个国产游戏,米or腾的,找到里面的libtprt.so就行
2023-5-4 11:30
4
雪    币: 835
活跃值: (2287)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
谢谢分享!
2023-5-4 17:56
0
雪    币: 361
活跃值: (8070)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10

大佬,我第一次patch后

按照大佬的思路,让0x62138 w8的寄存器改为0x1让其执行到loc_62158,拿第一次patch后的so去重新跑一次代码

修改w8寄存器值后,就报了JNI的错误,不修改是没问题的

Exception in thread "main" java.lang.IllegalStateException: Illegal JNI version: 0xffffffff

at com.github.unidbg.linux.android.dvm.BaseVM.checkVersion(BaseVM.java:212)

at com.github.unidbg.linux.android.dvm.DalvikModule.callJNI_OnLoad(DalvikModule.java:39)

at AntiOllvmTest.callJniOnload(AntiOllvmTest.java:367)

at AntiOllvmTest.main(AntiOllvmTest.java:372)


上传的附件:
2023-5-6 13:04
1
雪    币: 4511
活跃值: (7267)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
11
New对象处 大佬,我第一次patch后按照大佬的思路,让0x62138 w8的寄存器改为0x1让其执行到loc_62158,拿第一次patch后的so去重新跑一次代码修改w8寄存器值后,就报了JNI的错误,不修改 ...
因为改了分支之后,他原本的Jni_OnLoad函数就是会返回-1。但是unidbg源码里面如果jni_onload返回-1,就抛异常。这个可以修改Base.java第212行那里,在jni_onload返回-1的时候,让他打一条log而不是抛异常
2023-5-6 14:21
2
雪    币: 187
活跃值: (2718)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
大佬,可以帮忙看看样本里0x68324偏移的函数吗,用同样的方法会有大概十几个间接跳转没有修复,我通过改NZCV寄存器强行走一些分支有的能成功,但有的会造成死循环。希望大佬可以指点一下。样本应该和你的是同一个。
2023-5-11 14:24
0
雪    币: 4511
活跃值: (7267)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
13
Circ1e 大佬,可以帮忙看看样本里0x68324偏移的函数吗,用同样的方法会有大概十几个间接跳转没有修复,我通过改NZCV寄存器强行走一些分支有的能成功,但有的会造成死循环。希望大佬可以指点一下。样本应该和你的 ...
死循环这个问题可以这样做:设置一个强行patch标志位,当经过你修改分支的br x9的时候,标志位设置为true。然后下一次processbr的时候,检查标志位是否为true,如果是的话就立刻执行patch。这样就可以了。死循环在patch后强制结束就行
2023-5-11 14:39
3
雪    币: 187
活跃值: (2718)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
好的,谢谢大佬
2023-5-11 15:04
0
雪    币: 1149
活跃值: (1151)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
15
请问可以用这个方法 在pc上模拟x86 去除混淆么
2023-5-26 08:47
0
雪    币: 10072
活跃值: (34131)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
感谢分享
2023-5-26 09:17
1
雪    币: 4511
活跃值: (7267)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
17
program杨 请问可以用这个方法 在pc上模拟x86 去除混淆么
可以
2023-5-27 17:14
0
雪    币: 0
活跃值: (232)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
大佬好,请问可否提供您分析的这个样例文件,代码里面的硬编码地址不是很会计算
2023-5-28 18:27
0
雪    币: 0
活跃值: (232)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
请问reorderblock()函数中最后的这段代码里,toend和0x5E674L都是怎么得到的。toend被硬编码成private static final long toend = 0x5E6BC; 请问这两个值是怎么设置的?
        PatchIns pie = new PatchIns();
        pie.setAddr(toend);
        pie.setIns("b 0x" + Integer.toHexString((int) (getIndexAddr(0x83a9af56L) - toend)));
        patchs.add(pie);
        PatchIns pie1 = new PatchIns();
        pie1.setAddr(0x5E674L);
        pie1.setIns("b 0x"+Integer.toHexString((int) (getIndexAddr(0x83a9af56L) - 0x5E674L)));
        patchs.add(pie1);
2023-5-28 22:25
0
雪    币: 4511
活跃值: (7267)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
20
qdesy 请问reorderblock()函数中最后的这段代码里,toend和0x5E674L都是怎么得到的。toend被硬编码成private static final long toend = 0x5E6B ...
这个toend其实写的不太好,sorry~。我现在改做法了,就是在结尾跳转是直接回主分发器的时候,获取x8寄存器的值。然后获取x8对应的真实块。再把结尾处直接往主分发器的跳转改成跳转到下一个真实块。
2023-5-28 23:40
1
雪    币: 4511
活跃值: (7267)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
21
qdesy 请问reorderblock()函数中最后的这段代码里,toend和0x5E674L都是怎么得到的。toend被硬编码成private static final long toend = 0x5E6B ...
关于这个toend怎么获取的。toend是包含ret的块的开始地址。我肉眼找的。。
2023-5-28 23:46
1
雪    币: 4511
活跃值: (7267)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
22
qdesy 请问reorderblock()函数中最后的这段代码里,toend和0x5E674L都是怎么得到的。toend被硬编码成private static final long toend = 0x5E6B ...
然后第二个值是第一个真实块的开始地址。把主分发器那里的第一个间接跳转改为直接跳转到第一个真实块。
2023-5-28 23:48
0
雪    币: 4709
活跃值: (1760)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
23
mark
2023-5-29 09:25
0
雪    币: 5151
活跃值: (4978)
能力值: ( LV10,RANK:171 )
在线值:
发帖
回帖
粉丝
24
赞,感谢分享!
2023-5-29 15:22
0
雪    币: 32
活跃值: (897)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
写的真好
2023-5-30 17:10
0
游客
登录 | 注册 方可回帖
返回