能力值:
( LV2,RANK:10 )
|
-
-
26 楼
stlker去trace生成200W行的数据,而且app也是运行在电脑上的,都用了好几分钟,请问,您这个怎么实现这个速度级别的?基础的界面用什么框架或者语言写的?
|
能力值:
( LV2,RANK:10 )
|
-
-
27 楼
krash
我使用的是动态二进制插桩(dynamic binary instrumentation),跟frida stalker一样,frida有个很不错的文档stalker,可以参考。稍微麻烦一点是得自己解析 ... 解析load/store相关指令,计算访问内存地址和大小,能说说怎么做的吗? 有malloc之类就记录下来地址大小?这方面有相关的代码推荐吗? 工具的UI部分用什么框架写的。还是完全自主开发
最后于 2022-6-1 20:53
被flashgg编辑
,原因:
|
能力值:
( LV7,RANK:110 )
|
-
-
28 楼
niubi
|
能力值:
( LV9,RANK:180 )
|
-
-
29 楼
flashgg
stlker去trace生成200W行的数据,而且app也是运行在电脑上的,都用了好几分钟,请问,您这个怎么实现这个速度级别的?基础的界面用什么框架或者语言写的?
回调用户js hook开销太大了吧,理论上应该差不多的。界面是qt,c++实现的。
|
能力值:
( LV9,RANK:180 )
|
-
-
30 楼
flashgg
krash
我使用的是动态二进制插桩(dynamic binary instrumentation),跟frida stalker一样,frida ...
解析指令理论上可以直接使用vixl,我后面可能也会改成直接使用vixl。
|
能力值:
( LV12,RANK:345 )
|
-
-
31 楼
很高兴国内的安全从业者,有如此思考,能够站在巨人的肩膀上前行,研发的这个工具大大提高分析效率,大部分打工仔都只是着眼于眼下的工作了,整日忙碌,缺碌碌无为。为楼主点赞。其实在国内我们最缺的就是分享精神,而分析不单单是给予别人,也会让自己领悟的更透彻。
|
能力值:
( LV11,RANK:188 )
|
-
-
32 楼
mark下,lz实现了我想做又一直没有做的事情,羡慕,有能力有时间! 数个问题想了解一下, 是用qiling这类,还是qemu自己模拟的? 分析引擎和trace引擎理论上是完全拆分开的两个模块,我的设想是还要有一套固定格式的trace。这样解决跨平台,跨trace工具的问题,之前有了解多套方案,就是行动力太差只有架子没有功能。这个通用格式lz有考虑过吗 这类工具受众太小,我辈又往往不擅长推广,要在小范围分享迟早又变成公开工具。lz以后是要自己使用,还是像vmpstudio做付费的国产逆向工具?
|
能力值:
( LV9,RANK:180 )
|
-
-
33 楼
XPoy
mark下,lz实现了我想做又一直没有做的事情,羡慕,有能力有时间!
数个问题想了解一下,
是用qiling这类,还是qemu自己模拟的?
分析引擎和trace引擎理论上是完全拆分开的两个模块, ...
trace是frida类,不是qemu。 导入第三方工具记录的trace这个问题有考虑过,比如qiling,unidbg,ida,lldb这些。模拟器类的trace都有内存回调,可以记录内存,但是调试器只有cpu上下文,如何通过cpu上下文变化逆推内存内容这个问题还得研究,等以后有方案了可能就会着手实现。至于trace格式我认为倒不是什么问题,遇到了修改即可。 工具目前还是自己使用,看能不能用它在公司先搞点kpi。
|
能力值:
( LV2,RANK:10 )
|
-
-
34 楼
str x8, [x11, w10, uxtw #3] ;x8 = 0xf 如果我想保存x11中存储的内容,怎么才能获取到他里边存储的数据总长度,能说个具体的方法吗 str x8, [x9] ;x8 = 0x16f567310; 这种的还得区分出类型来吧。 或者说,你的程序,只算出了[x11, w10, uxtw #3] 的地址,把那个地址跟x8里边的值对应上了。计算地址这块有什么解决方案?需要自己去实现uxtw吗
最后于 2022-6-3 22:08
被flashgg编辑
,原因:
|
能力值:
( LV4,RANK:45 )
|
-
-
35 楼
krash
用户态函数级别的?如果函数是线程入口就是线程级别的?我设计是支持同时trace多个线程和嵌套trace,也就是trace一个函数时可以调用另外一个trace函数。
感谢分享!大佬在trace多线程的时候,是怎么判断当前执行的指令是属于哪个线程的呢,最后生成的trace记录,是按照不同线程分开存放,还是按照指令的执行顺序存放呢
|
能力值:
( LV9,RANK:180 )
|
-
-
36 楼
或者说,你的程序,只算出了[x11, w10, uxtw #3] 的地址,把那个地址跟x8里边的值对应上了。计算地址这块有什么解决方案?需要自己去实现uxtw吗
是这样的,需要自己根据cpu上文计算。
最后于 2022-6-4 22:32
被krash编辑
,原因:
|
能力值:
( LV9,RANK:180 )
|
-
-
37 楼
v0id_
感谢分享!大佬在trace多线程的时候,是怎么判断当前执行的指令是属于哪个线程的呢,最后生成的trace记录,是按照不同线程分开存放,还是按照指令的执行顺序存放呢
我的是函数级别的trace,执行这个函数的时候用gettid就能知道线程。trace保存是分文件保存,设计上支持合并多个trace成一个有序的trace。
|
能力值:
( LV13,RANK:296 )
|
-
-
38 楼
mark
|
能力值:
( LV2,RANK:10 )
|
-
-
39 楼
学习,膜拜大佬
|
能力值:
( LV7,RANK:100 )
|
-
-
40 楼
牛逼牛逼牛逼
|
能力值:
( LV2,RANK:10 )
|
-
-
41 楼
krash
我使用的是动态二进制插桩(dynamic binary instrumentation),跟frida stalker一样,frida有个很不错的文档stalker,可以参考。稍微麻烦一点是得自己解析 ...
防御方检测的话,放bx指令 代码段 指令校验 能检测出来 :)
|
能力值:
( LV2,RANK:10 )
|
-
-
42 楼
DiamondH
时间无关有点RR debugger+coredump的感觉,污点追踪就太猛了,有点好奇技术细节,比如如何实现高效的trace记录,污点追踪采用的方法之类的
估计是在每个patch跟踪段指令 ,blx (注入记录数据的代码段) bx lr 相对比于调试器单步跟踪的开销仅仅是几条指令,调试器需要内核和应用层通信,消耗极大的
|
能力值:
( LV4,RANK:40 )
|
-
-
43 楼
霸业
估计是在每个patch跟踪段指令 ,blx (注入记录数据的代码段) bx lr
相对比于调试器单步跟踪的开销仅仅是几条指令,调试器需要内核和应用层通信,消耗极大的
不是这样的哦,看下stalker实现吧
|
能力值:
( LV2,RANK:10 )
|
-
-
44 楼
工具发出来呀。
|
能力值:
( LV2,RANK:10 )
|
-
-
45 楼
krash
我使用的是动态二进制插桩(dynamic binary instrumentation),跟frida stalker一样,frida有个很不错的文档stalker,可以参考。稍微麻烦一点是得自己解析 ...
大佬插桩库不会也是自己写的吧
|
能力值:
( LV9,RANK:180 )
|
-
-
46 楼
|
能力值:
( LV1,RANK:0 )
|
-
-
47 楼
大佬把工具私法给我
|
能力值:
( LV2,RANK:10 )
|
-
-
48 楼
方便请教大佬一下不用keystone和capstone的原因吗,是性能方面的考量吗 :) 另外如果碰到 修改自身代码的壳 ,动态插桩会失效吧 :)
|
能力值:
( LV2,RANK:10 )
|
-
-
49 楼
DiamondH
不是这样的哦,看下stalker实现吧
stalker实现确实不是每个指令前插bx,是以块为基本单位 ,在块前面插bx指令
|
能力值:
( LV2,RANK:10 )
|
-
-
50 楼
moonkit
工具发出来呀。 这种内部的工具发出来 你想多了
最后于 2022-6-10 20:10
被霸业编辑
,原因:
|
|
|