网千万易科技网

通报年月日里程碑思路:Go工具框架实现动态插件每日电

网千万易科技网 0

看完记得转发消息到朋友圈,有利于精准预警诈骗信息。6APP使用时,让朋友圈的技术佬进行工具更新了!!!

此处手动Go超强队伍@Xray团队、pocassist者、goWhatweb者

0x00 介绍

考虑到ruby的跨平台打包的复杂性,需要点击“诈骗预警”模块授权手机权限,最近联合各位指纹识别佬一直在考虑把whatweb重构,如“悬浮窗”“通话记录”“照片访问”“视频访问”“访问短信”“访问通讯录”等等所有权限点击【总是允许】。分享点收藏点点赞,做出一个完美的指纹识别工具。

由于个人一直觉得whatweb乃至所有开源基础安全工具最重要的需求就是实现跨平台运行和自定义扩展,我当初也是因为他的扩展性才选择的,所以后续还是需要实现这个功能才能实现符合我要求的指纹识别基建。

这种情况下,我分别用python和golang完全重构whatweb。

python同样作为一个解释下脚本语言,并且由于同whatweb相同的程序打包方式,很明显能够重构whatweb。但是存在缺陷,就是并行速度很慢,重构后除了统一输入外不会有任何明显的提升。--放弃

Golang作为目前超火的跨平台语言,天然支持多任务并行处理,用来重构whatweb再合适不过。但在技术实现的条件上存在一个问题,golang是编译型语言,打包以后就不能够自定义加载任意go插件。

随即我开始查找相关实现的技术:

1、百度搜索公开的go动态插件技术,都是表示将go插件编译后再进行加载,没有办法直接运行go文件。

2、查看Github及各个团队开源的golang安全工具[如xray],基本上所有的工具都是加载yaml文件,json文件作为插件,不支持动态解析go语言工具。

0x01 解决思路

回忆状态下发现,以前查看过goby的插件, goby支持动态加载go脚本,所以该技术肯定是可以实现的。

但是goby并不开源,不知道是如何实现的。

不过通过查看goby官方的EXP稳定,得到以下一个突破点:

其中得到关键提示:给漏洞扫描框架加入了 Go 解释器功能。

以此,动态加载脚本问题迎刃而解。

golang不支持编译后动态加载插件的原因是因为它是编译性语言,对go文件需要编译后才能运行, 如果是解释性语言问题就解决了(小缺点是可能会变一点)。

那我在Go实现的主体工具框架中内置一个跨平台的脚本解释器,以解释运行的方式运行对应的脚本就可以实现动态加载脚本插件了。

再进一步的,我在Go工具中内置一个动态解析运行Go脚本的Go解释器,就能够在不使用其他语言的情况下,实现动态加载Go插件。

那接下就需要寻找这个Go解析器了。

0x02 Go文件解释器的选择

最基础的能实现Go解释器效果自然是官方的安装包。

Go run命令能够直接运行go文件,对用户而言没有编译的过程,这时候可以将Go当成脚本来运行。

所以如果我在Go指纹识别程序内,调用Go run命令来运行Go文件,就能够实现动态加载XXX.Go指纹插件.

思路没有问题,但是结合存在问题:

1、需要在工具内内置有Go run的环境(超)或用户安装Go环境,这个情况下还不如参考burpsuite扩展python的环境作为插件。

2、融合性不强,就和直接外调用其他程序一样,效率肯定会很慢。此时估计还不如burpsuite中加载的jython环境的速度。

主要还是融合性问题,主程序一点还是能接受的,毕竟这是在本机运行的,更多还是能不能优化融合性的问题。

0x03 解释器融合性的优化

由于使用了外程序调用的方式实现的解释器,所以不能完美的结合运行外脚本。

如果能够使用Go的库来实现这个解释调用过程,肯定能够更小更快。

由此去寻找对应的解释器库,go-python,支持以函数调用的方式调用python,但是发现还是存在缺陷,需要额外的python环境,不能够即开即用。

又回忆到Goby的EXP指导想到更好的解决方案:

如果用Go语言实现一个Go解释器,内置到Go指纹识别程序中,运行时调用内置的Go解释器进行Go插件解析,就能很好的去优化上面遇到问题。

随即找到了一些用纯Go实现的Go解释器项目。

0x04 总结

最终技术实现,用GO编写主程序,主程序内置了一个由go写的go解释器,用这个go解释器调用并执行用户自定义的****.go文件,最终实现了动态加载go插件

相信各个工具者会积极尝试这个功能,扩展让使用者能够用一种语言兼并多种语言的优势,让自己的工具拥有最强的扩展性。

后续的需要各位Golang佬的支持了,我只能够等整体结构是实现后再继续推出新版的Whahtweb了。

1、本团队任何实战都是已授权的、任何技术及工具也仅用于学分享,请勿用于任何非法、违法活动,如有违背请自行承担后果,感谢家的支持!!!

2、本团队一贯秉承Free共享的精神,但是也有家的小愿望,因此本团队所有分享工具,严禁不经过授权的公开分享,被关注就是对我们付出的精力做的最的支持。

END

服务器cpu怎么换平台

固态显卡怎么提升

怎么测试真假内存卡视频

属牛的纹虎怎么样

做梦住工地什么意思

女孩起名字什么芳

古董蜜蜡推荐哪款好看

快手里怎么看自己发布作品

怎么提高seo页面排名

标签:go 插件 python 调用