大家来聊聊逆向工具A64dgb工具的看法

刷抖音看到这个人的工具,觉得还有挺有技术含量就发到社区大家看看/


从他看雪发的帖子来看:

主要是对对断点出的 代码页托管 虚拟化,个人理解…就是对断点处的代码页,从新拷贝了一份,然后类似重定向了,该代码页内的 代码。所以这样的对 ptrace函数的直接调用,应该可以做到监控。 又有点像 重载内核模块的感觉…具体的怎么实现的,要去看看他怎么弄的…

然后就是 开了一个调试节界面,类似 od…
对应的调试器依然是 lldb…<对应平台应该用了对应的调试器,目前lldb能做到大部分跨平台功能>
对shell命令支持,应该是 封装了 一下 shell的指令

总的来看,内存页虚拟化做法,有独到地方
对类似OD的UI开发,配合lldb等调试器,是个好的项目,毕竟OD用的习惯。

调试市场 用的人就那么多,感觉市场有限。但是不否认是一款类似OD的良心产品,商业化,不太看好。毕竟 lldb 是开源的,适应绝大部分平台。而使用他这个产品的,目前来说,都是lldb的使用者,基本用法,都有自己成熟的脚本。如果他的产品发展下去的呀,需要的是让调试爱好者投入到工具的使用(类似不太了解调试器工具的,但是能用OD的这类使用者…所以感觉不太容易,毕竟win下od的推广,也是经过了长时间的沉淀)

1 个赞

从win转unix类平台逆向,第一个问的问题就是怎么没有一个GUI调试工具,其实是个伪需求。 :joy:

我猜测核心原理是:去掉断点所在页的可执行权限,后面在执行到这页指令的时候会触发异常。触发异常后会,在信号处理函数中使用Sigreturn-oriented programming (SROP)技术在信号处理函数中返回到解释器,
然后在解释器中解释执行该页代码,处理断点逻辑等。这个方法不使用ptrace,也不会修改原始代码(传统调试会将断点处指令修改为断点指令),所以能通过常见的ptrace和代码自校验等反调试检测。

1 个赞

这么说也有可能,这样的话,可以省去很多代码。毕竟 内存断点的实现,就是改变那个内存页的相关属性(内存读写断点,就是去掉地址所在内存页的读写权限)。这么一说,还真有可能是把代码所在的内存页可执行权限给改了,有理,有理,学到了~