开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
1 Star 0 Fork 19

y11en/shellcode_driver

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (1)
master
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
项目仓库所选许可证以仓库主分支所使用许可证为准
master
分支 (1)
master
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (1)
master
shellcode_driver
/
ShellCodeDriver
/
shell_common.cpp
shellcode_driver
/
ShellCodeDriver
/
shell_common.cpp
shell_common.cpp 5.07 KB
一键复制 编辑 原始数据 按行查看 历史
老爷爷 提交于 2018年05月17日 17:46 +08:00 . #up
#include "shell_common.h"
#include <ntimage.h>
DWORD HashROR13A(_In_ LPCSTR sz)
{
DWORD dwVal, dwHash = 0;
while (*sz) {
dwVal = (DWORD)*sz++;
dwHash = (dwHash >> 13) | (dwHash << 19);
dwHash += dwVal;
}
return dwHash;
}
QWORD PEGetProcAddressH(_In_ QWORD hModule, _In_ DWORD dwProcNameH)
{
PDWORD pdwRVAAddrNames, pdwRVAAddrFunctions;
PWORD pwNameOrdinals;
DWORD i, dwFnIdx, dwHash;
LPSTR sz;
PIMAGE_DOS_HEADER dosHeader = (PIMAGE_DOS_HEADER)hModule; // dos header.
if (!dosHeader || dosHeader->e_magic != IMAGE_DOS_SIGNATURE) { return 0; }
PIMAGE_NT_HEADERS ntHeader = (PIMAGE_NT_HEADERS)(hModule + dosHeader->e_lfanew); // nt header
if (!ntHeader || ntHeader->Signature != IMAGE_NT_SIGNATURE) { return 0; }
PIMAGE_EXPORT_DIRECTORY exp = (PIMAGE_EXPORT_DIRECTORY)(ntHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress + hModule);
if (!exp || !exp->NumberOfNames || !exp->AddressOfNames) { return 0; }
pdwRVAAddrNames = (PDWORD)(hModule + exp->AddressOfNames);
pwNameOrdinals = (PWORD)(hModule + exp->AddressOfNameOrdinals);
pdwRVAAddrFunctions = (PDWORD)(hModule + exp->AddressOfFunctions);
for (i = 0; i < exp->NumberOfNames; i++) {
sz = (LPSTR)(hModule + pdwRVAAddrNames[i]);
dwHash = HashROR13A(sz);
if (dwHash == dwProcNameH) {
dwFnIdx = pwNameOrdinals[i];
if (dwFnIdx >= exp->NumberOfFunctions) { return 0; }
return (QWORD)(hModule + pdwRVAAddrFunctions[dwFnIdx]);
}
}
return 0;
}
VOID InitializeKernelFunctions(_In_ QWORD qwNtosBase, _Out_ PKERNEL_FUNCTIONS fnk)
{
QWORD FUNC2[][2] = {
{ (QWORD)&fnk->_stricmp, H__stricmp },
{ (QWORD)&fnk->ExAllocatePool, H_ExAllocatePool },
{ (QWORD)&fnk->ExFreePool, H_ExFreePool },
{ (QWORD)&fnk->IoCreateDriver, H_IoCreateDriver },
{ (QWORD)&fnk->KeDelayExecutionThread, H_KeDelayExecutionThread },
{ (QWORD)&fnk->KeGetCurrentIrql, H_KeGetCurrentIrql },
{ (QWORD)&fnk->MmGetPhysicalAddress, H_MmGetPhysicalAddress },
{ (QWORD)&fnk->MmLoadSystemImage, H_MmLoadSystemImage },
{ (QWORD)&fnk->MmMapIoSpace, H_MmMapIoSpace },
{ (QWORD)&fnk->MmUnloadSystemImage, H_MmUnloadSystemImage },
{ (QWORD)&fnk->MmUnmapIoSpace, H_MmUnmapIoSpace },
{ (QWORD)&fnk->RtlAnsiStringToUnicodeString, H_RtlAnsiStringToUnicodeString },
{ (QWORD)&fnk->RtlCopyMemory, H_RtlCopyMemory },
{ (QWORD)&fnk->RtlFreeUnicodeString, H_RtlFreeUnicodeString },
{ (QWORD)&fnk->RtlInitAnsiString, H_RtlInitAnsiString },
{ (QWORD)&fnk->RtlInitUnicodeString, H_RtlInitUnicodeString },
{ (QWORD)&fnk->RtlInitUnicodeString, H_RtlInitUnicodeString },
{ (QWORD)&fnk->RtlZeroMemory, H_RtlZeroMemory },
{ (QWORD)&fnk->ZwClose, H_ZwClose },
{ (QWORD)&fnk->ZwCreateFile, H_ZwCreateFile },
{ (QWORD)&fnk->ZwOpenFile, H_ZwOpenFile },
{ (QWORD)&fnk->ZwReadFile, H_ZwReadFile },
{ (QWORD)&fnk->ZwQueryDirectoryFile, H_ZwQueryDirectoryFile },
{ (QWORD)&fnk->ZwQuerySystemInformation, H_ZwQuerySystemInformation },
{ (QWORD)&fnk->ZwSetSystemInformation, H_ZwSetSystemInformation },
{ (QWORD)&fnk->ZwWriteFile, H_ZwWriteFile },
{ (QWORD)&fnk->_strlen, H_strlen },
{ (QWORD)&fnk->_PsCreateSystemThread, H_PsCreateSystemThread },
{ (QWORD)&fnk->_DbgPrintEx,H_DbgPrintEx},
};
for (QWORD j = 0; j < (sizeof(FUNC2) / sizeof(QWORD[2])); j++) {
*(PQWORD)FUNC2[j][0] = PEGetProcAddressH(qwNtosBase, (DWORD)FUNC2[j][1]);
}
fnk->pvStart = (PVOID)qwNtosBase;
}
DWORD PEGetImageSize(_In_ QWORD hModule)
{
PIMAGE_DOS_HEADER dosHeader = (PIMAGE_DOS_HEADER)hModule; // dos header.
if (!dosHeader || dosHeader->e_magic != IMAGE_DOS_SIGNATURE) { return 0; }
PIMAGE_NT_HEADERS ntHeader = (PIMAGE_NT_HEADERS)((LONG_PTR)hModule + dosHeader->e_lfanew); // nt header
if (!ntHeader || ntHeader->Signature != IMAGE_NT_SIGNATURE) { return 0; }
return ntHeader->OptionalHeader.SizeOfImage;
}
VOID CommonSleep(_In_ PKERNEL_FUNCTIONS fnk, _In_ DWORD ms)
{
LARGE_INTEGER llTimeToWait;
llTimeToWait.QuadPart = -10000LL * ms;
fnk->KeDelayExecutionThread(KernelMode, FALSE, &llTimeToWait);
}
QWORD KernelGetModuleBase(_In_ PKERNEL_FUNCTIONS fnk, _In_ LPSTR szModuleName)
{
PBYTE pbSystemInfoBuffer;
SIZE_T cbSystemInfoBuffer = 0;
PRTL_PROCESS_MODULE_INFORMATION pSME;
QWORD i, qwAddrModuleBase = 0;
fnk->ZwQuerySystemInformation(SystemModuleInformation, NULL, 0, (PULONG)&cbSystemInfoBuffer);
if (!cbSystemInfoBuffer) { return 0; }
pbSystemInfoBuffer = (PBYTE)fnk->ExAllocatePool(0, cbSystemInfoBuffer);
if (!pbSystemInfoBuffer) { return 0; }
if (0 == fnk->ZwQuerySystemInformation(SystemModuleInformation, pbSystemInfoBuffer, (ULONG)cbSystemInfoBuffer, (PULONG)&cbSystemInfoBuffer)) {
pSME = ((PRTL_PROCESS_MODULES)(pbSystemInfoBuffer))->Modules;
for (i = 0; i < ((PRTL_PROCESS_MODULES)(pbSystemInfoBuffer))->NumberOfModules; i++) {
if (0 == fnk->_stricmp(szModuleName, (char *)pSME[i].FullPathName + pSME[i].OffsetToFileName)) {
qwAddrModuleBase = (QWORD)pSME[i].ImageBase;
}
}
}
if (pbSystemInfoBuffer) { fnk->ExFreePool(pbSystemInfoBuffer); }
return qwAddrModuleBase;
}
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

无导入表的driver与shellcode化——因为SEH问题项目报废--2018年正式解封开源
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/yllen/shellcode_driver.git
git@gitee.com:yllen/shellcode_driver.git
yllen
shellcode_driver
shellcode_driver
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /