首页
论坛
课程
招聘
[原创]libsgmain反混淆及VM还原
2021-5-23 16:39 41948

[原创]libsgmain反混淆及VM还原

2021-5-23 16:39
41948
收藏
点赞30
打赏
分享
打赏 + 200.00雪花
打赏次数 1 雪花 + 200.00
 
赞赏  猫盾科技   +200.00 2021/05/23 精品文章~
最新回复 (42)
雪    币: 1163
活跃值: 活跃值 (874)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
gtict 活跃值 2021-5-24 19:55
26
0
大神的trace工具是基于啥写出来的
雪    币: 5209
活跃值: 活跃值 (2925)
能力值: ( LV10,RANK:175 )
在线值:
发帖
回帖
粉丝
挤蹭菌衣 活跃值 1 2021-5-24 21:52
27
0
krash 自制的。土豪用的是哪个?
厉害  我穷人只能用ida大佬有什么推荐吗
雪    币: 14382
活跃值: 活跃值 (3564)
能力值: ( LV13,RANK:835 )
在线值:
发帖
回帖
粉丝
大帅锅 活跃值 4 2021-5-25 10:40
28
0
只想知道,trace是如何保证每个真实块能覆盖到的
雪    币: 385
活跃值: 活跃值 (381)
能力值: ( LV13,RANK:377 )
在线值:
发帖
回帖
粉丝
bitt 活跃值 5 2021-5-26 11:06
29
0
牛啊
雪    币: 262
活跃值: 活跃值 (322)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
327135569 活跃值 2021-5-28 13:48
30
0
强, 很强. 如果 ida 有 IR 层分析的深度支持就好了.. 
雪    币: 2071
活跃值: 活跃值 (3509)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lhxdiao 活跃值 2021-5-30 08:54
31
0
太牛了,我这种懒人都是取巧用编译器优化,直接把无用片段压缩删除掉,编译器优化出来的东西跟没有混淆之前一样
雪    币: 221
活跃值: 活跃值 (951)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wx_0xC05StackOver 活跃值 2021-5-31 14:40
32
0
其实是受限于体积和性能,我们没有对vmhandle做混淆处理,和litevm的开发沟通了下,对方表示vmprotect强其实也是强在对于vm做了混淆如果这里上混淆的话效果要好不少,但是体积和性能又不允许,这是个折衷的方案。顺便litevm的开发表示最新版本已经在酝酿中了23333
雪    币: 175
活跃值: 活跃值 (3552)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
suuuuu 活跃值 2021-5-31 16:55
33
0
着实nb
雪    币: 3936
活跃值: 活跃值 (3767)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
krash 活跃值 4 2021-5-31 19:58
34
0
wx_0xC05StackOver 其实是受限于体积和性能,我们没有对vmhandle做混淆处理,和litevm的开发沟通了下,对方表示vmprotect强其实也是强在对于vm做了混淆如果这里上混淆的话效果要好不少,但是体积和性能又不允 ...

我没还原过PC的VMP,不知道VMP的handler是如何混淆的,我人个无责任猜测VMP强很可能不是因为混淆了handler。

之前还原@爱吃菠菜的安卓VmpCrackMe一枚,一个类似VMP VM Crackme,还原它有下面两个难点,我觉得可能会比混淆handler难处理:

  • VM基于栈的虚拟机,还原它的第一步就需要把栈虚拟机转换成寄存器机。
  • 还原完整CFG。这个VM跳转目标是动态计算的,在需要进行条件跳转时,VM Crackme会在栈上动态构建一个跳转表,根据条件码(nzcv)计算跳转case。还有恢复跳转条件对应的跳转目标。
雪    币: 636
活跃值: 活跃值 (289)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
Rprop 活跃值 2021-7-7 21:34
35
0
krash 不是,自己的,unicorn比较难改host的内存吧。
unicorn可直接映射host memory,其实是qemu的能力
雪    币: 3936
活跃值: 活跃值 (3767)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
krash 活跃值 4 2021-7-8 20:21
36
0
Rprop unicorn可直接映射host memory,其实是qemu的能力

可能我们理解的不太一样。我需要的是直接使用Host的内存,指令对内存的修改对Host可见,类似这位大佬的unicornVM,这个很好实现?

雪    币: 636
活跃值: 活跃值 (289)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
Rprop 活跃值 2021-7-8 22:08
37
0
krash 可能我们理解的不太一样。我需要的是直接使用Host的内存,指令对内存的修改对Host可见,类似这位大佬的unicornVM,这个很好实现?
是的,就是这个意思,之前实现了一套,挺方便的
雪    币: 636
活跃值: 活跃值 (289)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
Rprop 活跃值 2021-7-8 22:14
38
0
krash 可能我们理解的不太一样。我需要的是直接使用Host的内存,指令对内存的修改对Host可见,类似这位大佬的unicornVM,这个很好实现?
不过我是用unicorn的cpp接口做的,其它语言估计会麻烦点,只是unicorn的qemu滞后太多,估计unicorn2性能会优点,不过用来trace足够用了
雪    币: 3936
活跃值: 活跃值 (3767)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
krash 活跃值 4 2021-7-8 22:46
39
0
Rprop 不过我是用unicorn的cpp接口做的,其它语言估计会麻烦点,只是unicorn的qemu滞后太多,估计unicorn2性能会优点,不过用来trace足够用了
了解。等后面我搞x86的时候再研究下。
雪    币: 636
活跃值: 活跃值 (289)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
Rprop 活跃值 2021-7-8 23:18
40
0
krash 了解。等后面我搞x86的时候再研究下。
x86?现在这套trace是用类似ptrace在设备上运行的?
另外大佬的goron还维护吗
雪    币: 3936
活跃值: 活跃值 (3767)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
krash 活跃值 4 2021-7-8 23:50
41
0
Rprop x86?现在这套trace是用类似ptrace在设备上运行的? 另外大佬的goron还维护吗
现在这套只支持arm64,以前还支持arm32。arm32指令集太复杂,坑太多,后面重构的时候直接不考虑了。
没有用ptrace,改的rom。
goron没有在维护,主要是没有什么好想法。现在觉得有trace,搞些自动化分析trace的工具,啥混淆都能分析。
雪    币: 22
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
万里星河 活跃值 2021-7-12 20:13
42
0
太牛逼了
雪    币: 281
活跃值: 活跃值 (66)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
martinkro 活跃值 2021-11-26 02:01
43
0
有类似开源码的Trace工具吗?能否说下实现原理
游客
登录 | 注册 方可回帖
返回