c语言断链隐藏dll,通过断链隐藏模块(DLL)
主要是通过teb+peb实现模块隐藏
// HideDll.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include
#include
#include
DWORD g_isHide = 0;
typedef struct _UNICODE_STRING
{
USHORT Length;
USHORT MaximumLength;
PWSTR Buffer;
} UNICODE_STRING, *PUNICODE_STRING;
typedef struct _PEB_LDR_DATA {
ULONG Length;
BOOLEAN Initialized;
PVOID SsHandle;
LIST_ENTRY InLoadOrderModuleList;
LIST_ENTRY InMemoryOrderModuleList;
LIST_ENTRY InInitializationOrderModuleList;
} PEB_LDR_DATA, *PPEB_LDR_DATA;
typedef struct _LDR_MODULE
{
LIST_ENTRY InLoadOrderModuleList; //+0x00
LIST_ENTRY InMemoryOrderModuleList; //+0x08
LIST_ENTRY InInitializationOrderModuleList; //+0x10
void* BaseAddress; //+0x18
void* EntryPoint; //+0x1c
ULONG SizeOfImage;
UNICODE_STRING FullDllName;
UNICODE_STRING BaseDllName;
ULONG Flags;
SHORT LoadCount;
SHORT TlsIndex;
HANDLE SectionHandle;
ULONG CheckSum;
ULONG TimeDateStamp;
} LDR_MODULE, *PLDR_MODULE;
void HideDll()//这个函数是主要的
{
HMODULE hMod = ::GetModuleHandle("ntdll.dll");
PLIST_ENTRY Head, Cur;
PPEB_LDR_DATA ldr;
PLDR_MODULE ldm;
__asm
{
mov eax, fs:[0x30] //获取PEB结构
mov ecx, [eax + 0x0c] //Ldr //获取_PEB_LDR_DATA结构
mov ldr, ecx
}
Head = &(ldr->InLoadOrderModuleList); //获取模块链表地址
Cur = Head->Flink; //获取指向的结点.
do
{
ldm = CONTAINING_RECORD(Cur, LDR_MODULE, InLoadOrderModuleList); //获取 _LDR_DATA_TABLE_ENTRY结构体地址
//printf("EntryPoint [0x%X]\n",ldm->BaseAddress);
if (hMod == ldm->BaseAddress) //判断要隐藏的DLL基址跟结构中的基址是否一样
{
g_isHide = 1; //如果进入.则标志置为1,表示已经开始进行隐藏了.
ldm->InLoadOrderModuleList.Blink->Flink = //双向链表. 断开链表
ldm->InLoadOrderModuleList.Flink;
ldm->InLoadOrderModuleList.Flink->Blink =
ldm->InLoadOrderModuleList.Blink;
ldm->InInitializationOrderModuleList.Blink->Flink =
ldm->InInitializationOrderModuleList.Flink;
ldm->InInitializationOrderModuleList.Flink->Blink =
ldm->InInitializationOrderModuleList.Blink;
ldm->InMemoryOrderModuleList.Blink->Flink =
ldm->InMemoryOrderModuleList.Flink;
ldm->InMemoryOrderModuleList.Flink->Blink =
ldm->InMemoryOrderModuleList.Blink;
break;
}
Cur = Cur->Flink;
} while (Head != Cur);
}
int main()
{
printf("按键开始隐藏\r\n");
getchar();
HideDll();
if (g_isHide == 0)
{
printf("没有成功隐藏\r\n");
system("pause");
return 0;
}
printf("成功隐藏\r\n");
system("pause");
return 0;
}
c语言断链隐藏dll,通过断链隐藏模块(DLL)相关推荐
- C语言程序设计学习笔记:P3-判断
本系列博客用于记录学习浙江大学翁恺老师的C语言程序设计,系列笔记链接如下: C语言程序设计学习笔记:P1-程序设计与C语言 C语言程序设计学习笔记:P2-计算 C语言程序设计学习笔记:P3-判断 C语 ...
- 分析隐藏在比特币区块链中的Pony CC服务器
介绍 Redaman是一种通过网络钓鱼攻击活动进行传播的银行恶意软件,主要目标用户为俄语用户.该恶意软件最早出现在2015年,当时该恶意软件被称为RTM银行木马,新版本的Redaman出现在2017年 ...
- 间歇性断食是什么 间歇性断食法怎样吃
现在很多人为了减肥用到了很多的方法,但减肥是一个漫长的过程,很多人都很难坚持下来,而最近流行一个间歇性断食法,不知道减肥的小伙伴们有没有尝试过,今天就来跟大家分享一下:间歇性断食是什么?间歇性断食法怎 ...
- 区块链开发语言python_6种最常见的区块链编程语言
无论您是在寻找区块链开发工作还是只想了解幕后发生的事情,您都需要选择正确的语言来编写区块链.下面列出的六种语言是区块链开发领域中目前最热门的编程语言. 1. C ++ C ++是一种经得起考验的编程语 ...
- 《进程隐藏》:DLL挟持实现进程隐藏
<进程隐藏技术系列之简介>https://blog.csdn.net/weixin_43742894/article/details/105793689 在上一篇文章中,对进程隐藏技术进行 ...
- pb调用c语言dll,PB调用C#编写的Dll类库
在c# 中编写com组件,供PB调用实例 前言:c#中写的dll直接是不能被pb调用的,只有写成com组件才可以调用,所以用c#写dll时要注意. c#中新建类库 类库类型为通用类库,项目名为AddC ...
- C语言丨栈(二):链栈
栈是限定仅在表尾进行插入或删除操作的线性表,表尾称为栈顶(top),表头称为栈底(bottom).栈的最主要特点就是"先进后出"(FILO),或"后进先出"(L ...
- vue如何生成公钥私钥_百行Python代码演示1私钥生成多公链公钥原理。|区块链财富指北私钥篇(2)...
<区块链财富指北>系列文章由NOCY.COM策划,肖南飞主笔撰写. 技术选型基于BOScore公链,旨在以有趣易懂的方式传播普及区块链技术,不构成任何投资建议! 学习之前说学习 今天这篇文 ...
- C++中模块(Dll)对外暴露接口的方式
总结下C++中模块(Dll)对外暴露接口的方式: (1)导出API函数的方式 这种方式是Windows中调用DLL接口的最基本方式,GDI32.dll, User32.dll都是用这种方式对外暴露系统 ...
- 区块链软件公司用区块链技能重塑科学出书社
区块链软件公司用区块链技能重塑科学出书社 该行业现在的性质引发了影响研讨社区的几个问题:获取学术研讨的高成本.出书商而非作者具有版权.评定员缺少奖赏和认可,以及低质量期刊的众多.该行业面对的另一个主要 ...
最新文章
- oracle 语法分析表,Oracle 语句优化分析说明
- MYSQL优化---hidba
- 国内敏捷项目协作工具亲测推荐
- jq简单封装replaceAll
- vue项目cordova打包的android应用
- 程序员面试金典 - 面试题 17.25. 单词矩阵(Trie树+DFS回溯,hard)
- git clone报错:fatal: unable to access ‘https://github.com/...
- 浅谈Opencl四大模型之Memory Model
- 如何用java弄相对布局_用java 编码实现相对布局界面
- Python 正则表达式(二)
- 如何构建一个交互式数据分析 Web 应用?
- jetty文件服务器,在Jetty中访问Web容器外部的文件
- 2124. OIBH杯第三次模拟赛(普及组)Problem 1 : tictac 立体井字棋
- matlab2008 软件下载及安装教程
- ai怎么做盒子效果图_仅需5步!手把手教你如何用AI绘制3D效果形象
- 神奇的识别图片文字代码
- deepin linux连接不上网络,把Deepin升级到15.8桌面版后无线上不了网的解决方法
- 【万字长文】Dubbo 入门总结 ,一款高性能的 Java RPC 框架
- VS2015:libcurl静态编译
- Java 常用工具类 - 校验身份证 IdCardUtils