一个我自己用的小工具

最近一段时间,事越来越多,要做的事情越来越多,需要的工具越来越多,

好多工具都要自己写,所以我又把我以前写的一个脚本工具弄出来了,

一个小的脚本工具,能做几乎所有事情,(就是有些简单有些麻烦而以),

打开之后,界面是这样的

这个脚本工具是基于lua 脚本的,因为我感觉lua更简单,小巧,便捷,

虽然也有一些不足,但是比那些个什么什么奇葩的强迫症脚本,比如python友善一些。 

内部支持一些内建的命令,来做一些相关的辅助操作

输入一个"?"会列出全部内建命令,有些说明可能不正确,有些命令可能功能没有实现,

但是实现了的命令都是可用的,等我有时间再来改它吧。

输入list命令,可以查看到所有内部已有的模块

大致如上,

其实,我常用的模块,只有

System、Info、Memory、Hack、File、Socket、Register、Buffer

这几个模块而已

1:System模块

内部支持了获取一些系统信息,以及与C语言函数调用相关的部分,

我最喜欢的还是stdcall 和cdecl 相关的部分,LoadLibrary 和 MLoadLibrary 也是我非常喜欢的,

一个是常规DLL加载,一个是无模块DLL加载,玩呗,挺有意思的,有的时候用得上。

我本人是做C 语言的,我更喜欢使用C 语言那套玩法,还成 lua 挺像 C 语言的。

比如这种玩法,一条命令,内部加载user32.dll,然后获取内部叫做MessageBoxA的函数,

再后使用stdcall的方式调用它,并且传入4个参数,

点了确定之后,会有4个返回值,方便使用,

最左边第一个返回值是当前 System.stdgetcall 的返回值,返回0,代表正确返回

左边第二个返回值是LoadLibrary user32.dll 之后得到的句柄值,用一个变量接过来的话,就可以直接用了,

GetProcAddress 什么的,都没问题,

左边第三个返回值是自动GetProcAddress MessageBoxA 这个函数的返回地址,有了这个地址,

其实后面如果再想用它,可以直接stdcall了,方便使用,

最后一个返回值是我们调用MessageBoxA 的返回值,我点的是确定,所以返回1,还行,

简单解释一个,其他的,大同小异

2:Info模块

目前其实没啥用,就是获取两个信息而已,获取当前mac地址信息,和获取当前domain信息,都是以前用到的,这里整合了

3:Memory 模块

内部支持了一堆乱七八糟内存操作,

我很喜欢C语言,所以嘛,内存操作不可少,

而且要调用API函数,内存操作不可少阿,

4:File 文件模块

都是常规的文件操作功能,起始我估计lua 的文件模块可能都比我的好,但是怎么说呢,

我更喜欢这种风格,功能虽然不是很全,但是目前够用,后续肯定还要添加

5:Socket 网络模块

就4个函数,实现的起始就是2个功能,下载和释放,

6:Register 模块

其实,我不记得我有实现这么多,肯定还有很多东西我没有实现,但是,目前我也够用了,

7:Buffer 模块

buffer模块其实是一个结构填充模块,我当初是为了实现SPIKE相关的结构填充功能,

才做的它,很好用,后面我会给出一个例子,真的太好用了

8:Hack模块

目前我比较常用的模块,其实吧,目前主要功能就一个:注入。

包括EP注入,镜像替换,强关句柄,然后就是批量注入,32位DLL注入到32位进程,64位DLL注入到64位进程,

其实我自己做测试的时候,挺有用的。

内部的功能都介绍个差不多了,

其实,就现阶段来说,这些功能我用的都不算是特别多,

我的这个小工具,支持使用内部功能直接加载API库,然后以C 语言的方式,直接调用API函数,

很激动,我很激动,我特别喜欢这个功能,做函数测试,就不用打开IDE了,

比如,输入 .ldapi 之后,会加载数据库,内部包含了一万来个API,反正够玩的,

之后,我再调用MessageBox 就不用那么麻烦了

直接来就好了,而且也符合MSDN里面的写法,不区分A、W版本,因为内部已经把A、W版本都处理掉了,

所有调用都走A版本,虽然这样不科学,但是能用啊,有时间再来改,反正我用着更爽了。

点击确定之后,只有一个返回值,就是MessageBox 的返回值,很贴心吧。

不过API列表,或者说API数据库需要单独制作,这个以后再说。

还有一个,我比较喜欢的就是插件系统,

我要新增一个功能,完全没有必要改它的代码,创建一个插件就好了,

这也就是为什么我明知道有个错别字就是懒得去改的原因,费事。

目前,我自己常用的插件就这么几个,

Dump 插件,是一个Dump 调试的脚本工具,可以批量调试一堆Dump 文件,找各种有用的信息,我用得比较多,

DriverFuzz 插件是一个利用IRP HOOK 来做到IRP Fuzz 的插件,我用得很少,

Fuzz,是个Fuzz 的模板

WindowsFuzz ,是个窗口Fuzz 的插件,用来做窗口消息的Fuzz,

PE,是一套PE修复工具,做对抗的,总是会遇到各种乱七八糟的Shellcode,如何修复ShellCode,便于分析,它可以,

ARK,就是一个简单的ARK工具。

工具部分简单地说到这里

目录部分,

目录结构如上,

API目录里面放的是API数据库列表文件

DLL目录里面放的是一些可能用到的DLL文件

Functions里面放的是一些初始化的lua脚本文件,这个目录非常有用

Plugins目录里面放的是全部插件文件,插件都放在这里面,才能加载,

最有用的就是 Functions 目录了,

这个目录里面允许放各种lua 脚本,

着里面的脚本,在脚本工具启动的时候,会统一地被初始化一次,

也就是说,这里面的脚本默认就会被执行,所以这里面可以做一些复杂的初始化工作,

比如

我用三个函数调用DLL目录里面的DLL功能,获取信息并当成字符串输出,

运行的时候就是这样的

简单,直接,方便,是不是很像C语言,我最爱的C语言。

甚至还可以

下载地址: https://files.cnblogs.com/files/suanguade/ZooShellEx.rar

想试试看的,可以拿去试试看,不包含插件及API数据库,没啥技术含量,纯粹是无聊的时候,写的一个小工具,为了给自己腾出手

原文地址:https://www.cnblogs.com/suanguade/p/8511360.html