嗨,大家好 !我今天要写关于“我怎样才能添加到模块到mimikatz
中?”首先,你必须在github中克隆或下载。我使用Visual Studio Community 2015来打开该项目。
在尝试添加新模块之前,我们必须构建mimikatz项目。如果这里失败了,记得在下一次操作之前先修复你的开发环境。我试过了,结果成功了,让我们继续,我们在/ mimikatz / modules
中创建自己的模块头和C文件,在这里:
/mimikatz/modules/kuhl_m_littlePrince.c
/mimikatz/modules/kuhl_m_littlePrince.h
我将讨论在检查项目时使用的一些全局变量。了解它们的用途将有助于我们开发模块。比如全局变量kuhl_m_littlePrince
& kuhl_m_c_littlePrince
。
或这些类型的全局变量:KUHL_M和KUHL_M_C
。“KUHL_M”
表示Kiwi用户级高级模块。KUHL_M
是由kuhl_m.h
中的“struct _KUHL_M”
定义的结构。
1 | typedef struct _KUHL_M { |
在kuhl_m.h
中定义的struct KUHL_M
或 * PKUHL_M`,这个结构的参数为:
1.shortName
用作模块名称,
2.fullName
用于列出显示名称
3.描述用于描述模块
4.nbcommand
用于命令的数量。
5.命令使用KUL_M_C
中定义的模块函数列表
6.由于“PKUHL_M_C_FUNC_INIT”
定义的名称是指NTSTATUS
。pInit
和pClean
是NTSTATUS
的变量类型。
PINIT&pClean
功能不是强制性的,只是为了调用函数之前初始化模块,则当模块被卸载的原型为PINIT&pClean
相同:NTSTATUS kuhl_m_modulename_init/clean()
“KUHL_M_C”
表示Kiwi用户级高级模块命令。
wchar_t
是“无符号短”。PKUHL_M_C_FUNC
定义了一个类型为“NTSTATUS”
的函数
1 | typedef struct _KUHL_M_C { |
1.pCommand
是我们的模块功能
2.“command”
说我们如何在终端中调用这个模块
3.描述是对函数做什么的简要描述NTSTATUS
类型在Ntdef.h
中定义,系统提供的状态码在Ntstatus.h
中定义。
NTSTATUS值用于传递系统信息。它们有四种类型:成功值,信息值,警告和错误值
NTSTATUS kuhl_m_modulename_functioname(int argc,wchar_t * argv []);
它可以在NTSTATUS
中返回它想要的内容,除了:STATUS_FATAL_APP_EXIT
,需要退出mimikatz。
我们在头文件中做了必要的声明并传递给了主文件。
我们用kuhl_m_modulename.h&kuhl_m_modulename.c
创建了我们的模块。最后一步我们需要在mimikatz.h
中添加模块,然后在mimikatz.c
模块列表中添加全局变量。
模块列表
你现在可以建立mimikatz,然后运行它!
如果你看到下面这个消息,那么你成功了!
祝你有美好的一天^^
本文翻译:https://littlesecurityprince.com/security/2018/03/18/ModuleMimikatz.html