主要是通过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)相关推荐

  1. C语言程序设计学习笔记:P3-判断

    本系列博客用于记录学习浙江大学翁恺老师的C语言程序设计,系列笔记链接如下: C语言程序设计学习笔记:P1-程序设计与C语言 C语言程序设计学习笔记:P2-计算 C语言程序设计学习笔记:P3-判断 C语 ...

  2. 分析隐藏在比特币区块链中的Pony CC服务器

    介绍 Redaman是一种通过网络钓鱼攻击活动进行传播的银行恶意软件,主要目标用户为俄语用户.该恶意软件最早出现在2015年,当时该恶意软件被称为RTM银行木马,新版本的Redaman出现在2017年 ...

  3. 间歇性断食是什么 间歇性断食法怎样吃

    现在很多人为了减肥用到了很多的方法,但减肥是一个漫长的过程,很多人都很难坚持下来,而最近流行一个间歇性断食法,不知道减肥的小伙伴们有没有尝试过,今天就来跟大家分享一下:间歇性断食是什么?间歇性断食法怎 ...

  4. 区块链开发语言python_6种最常见的区块链编程语言

    无论您是在寻找区块链开发工作还是只想了解幕后发生的事情,您都需要选择正确的语言来编写区块链.下面列出的六种语言是区块链开发领域中目前最热门的编程语言. 1. C ++ C ++是一种经得起考验的编程语 ...

  5. 《进程隐藏》:DLL挟持实现进程隐藏

    <进程隐藏技术系列之简介>https://blog.csdn.net/weixin_43742894/article/details/105793689 在上一篇文章中,对进程隐藏技术进行 ...

  6. pb调用c语言dll,PB调用C#编写的Dll类库

    在c# 中编写com组件,供PB调用实例 前言:c#中写的dll直接是不能被pb调用的,只有写成com组件才可以调用,所以用c#写dll时要注意. c#中新建类库 类库类型为通用类库,项目名为AddC ...

  7. C语言丨栈(二):链栈

    栈是限定仅在表尾进行插入或删除操作的线性表,表尾称为栈顶(top),表头称为栈底(bottom).栈的最主要特点就是"先进后出"(FILO),或"后进先出"(L ...

  8. vue如何生成公钥私钥_百行Python代码演示1私钥生成多公链公钥原理。|区块链财富指北私钥篇(2)...

    <区块链财富指北>系列文章由NOCY.COM策划,肖南飞主笔撰写. 技术选型基于BOScore公链,旨在以有趣易懂的方式传播普及区块链技术,不构成任何投资建议! 学习之前说学习 今天这篇文 ...

  9. C++中模块(Dll)对外暴露接口的方式

    总结下C++中模块(Dll)对外暴露接口的方式: (1)导出API函数的方式 这种方式是Windows中调用DLL接口的最基本方式,GDI32.dll, User32.dll都是用这种方式对外暴露系统 ...

  10. 区块链软件公司用区块链技能重塑科学出书社

    区块链软件公司用区块链技能重塑科学出书社 该行业现在的性质引发了影响研讨社区的几个问题:获取学术研讨的高成本.出书商而非作者具有版权.评定员缺少奖赏和认可,以及低质量期刊的众多.该行业面对的另一个主要 ...

最新文章

  1. oracle 语法分析表,Oracle 语句优化分析说明
  2. MYSQL优化---hidba
  3. 国内敏捷项目协作工具亲测推荐
  4. jq简单封装replaceAll
  5. vue项目cordova打包的android应用
  6. 程序员面试金典 - 面试题 17.25. 单词矩阵(Trie树+DFS回溯,hard)
  7. git clone报错:fatal: unable to access ‘https://github.com/...
  8. 浅谈Opencl四大模型之Memory Model
  9. 如何用java弄相对布局_用java 编码实现相对布局界面
  10. Python 正则表达式(二)
  11. 如何构建一个交互式数据分析 Web 应用?
  12. jetty文件服务器,在Jetty中访问Web容器外部的文件
  13. 2124. OIBH杯第三次模拟赛(普及组)Problem 1 : tictac 立体井字棋
  14. matlab2008 软件下载及安装教程
  15. ai怎么做盒子效果图_仅需5步!手把手教你如何用AI绘制3D效果形象
  16. 神奇的识别图片文字代码
  17. deepin linux连接不上网络,把Deepin升级到15.8桌面版后无线上不了网的解决方法
  18. 【万字长文】Dubbo 入门总结 ,一款高性能的 Java RPC 框架
  19. VS2015:libcurl静态编译
  20. Java 常用工具类 - 校验身份证 IdCardUtils

热门文章

  1. Linux期末复习题库(3)
  2. Python 的 __name__ 变量,到底是个什么东西?
  3. 你知道怎么使用OpenCV检测篮球运动员吗?
  4. Map Reduce Shuffle
  5. Factory-pattern 三种工厂模式
  6. 配置ssh公钥登录提示还是输入密码
  7. FutureTask demo
  8. 内网对时服务 ntp 平滑更改
  9. linux升级OpenSSL
  10. linux下安装oracle 10g