ring3 dll hide】的更多相关文章

ZwQuerySystemInformation(SystemProcessInformation,SystemInformation,Length,ReturnLength);         pSystemProcesses = (PSYSTEM_PROCESS_INFORMATION)SystemInformation;   while (TRUE){    printf("进程PID: %d\n",pSystemProcesses->InheritedFromProces…
背景 近期,维基解密曝光了一系列据称来自美国中央情报局(CIA)网络攻击活动的秘密文件,代号为“Vault 7”,被泄露文件的第一部分名为“Year Zero”,共有8761个文件,包含7818个网页和943份附件. 一.情报简介 Year Zero暴露了CIA全球窃听计划的方向和规模,还包括一个庞大的黑客工具库,该库包含的代码量过亿,赶超大型软件开发公司.这些黑客工具既有CIA自行开发的软件,也有据称是得到英国MI5(军情五处)协助开发的间谍程序,其中包括恶意软件.病毒.特洛伊木马.武器化的‘…
关于DevExpress.XtraGrid.v13.1.dll和DevExpress.XtraGrid.v12.2.dll中ShowCardExpandButton  或者 GridCardExpandButton隐藏针对不同版本有如下不同处理方式. 关于13.1版本处理方式 DevExpress.XtraGrid.v13.1.dll 设置属性 ShowCardExpandButton = false; 关于12.2版本中处理方式 DevExpress.XtraGrid.v12.2.dll <!…
欢迎转载,转载请注明出处:http://www.cnblogs.com/uAreKongqi/p/6012353.html 0x00.前言 提到Dll的注入,立马能够想到的方法就有很多,比如利用远程线程.Apc等等,这里我对Ring3层的Dll注入学习做一个总结吧. 我把注入的方法分成六类,分别是:1.创建新线程.2.设置线程上下背景文,修改寄存器.3.插入Apc队列.4.修改注册表.5.挂钩窗口消息.6.远程手动实现LoadLibrary. 那么下面就开始学习之旅吧! 0x01.预备工作 在涉…
工具介绍及使用请移步:http://blog.csdn.net/sunflover454/article/details/50441014 本文首发在零日安全论坛:http://www.jmpoep.com/thread-833-1-1.html 使用NtCreateThreadEx + LdrLoadDll方式实现远程线程注入的特色在于比一般的远程线程注入稳定,可以注入系统进程,服务进程等. 核心源代码如下,完整源代码,请在文章末尾下载. //OD跟踪,发现最后调用的是NtCreateThre…
APC,即Asynchronous procedure call,异步程序调用APC注入的原理是:在一个进程中,当一个执行到SleepEx()或者WaitForSingleObjectEx()时,系统就会产生一个软中断,当线程再次被唤醒时,此线程会首先执行APC队列中的被注册的函数,利用QueueUserAPC()这个API,并以此去执行我们的DLL加载代码,进而完成DLL注入的目的, 注入流程:1.根据进程名称得进程ID2.枚举该进程中的线程3.将自己的函数插入到每个线程的APC队列中 #in…
近日有在写一个小东西 需要在内核态中运行一个WIN32程序 之前提到的插入APC可以满足部分要求 但是一到WIN7 x86平台下就崩溃了WIN7下只能插入第三方的进程 一插入系统进程就崩溃,但是这样满足不了我们猥琐的想法- - 后来找到了一段代码 是注入RING3线程的 基本流程就是  查找系统中某个进程 比如explorer.exe然后遍历线程链表,判断线程是否是RING3的线程, 而且不是被挂起的.(这个无所谓的)... 找到符合要求的线程之后在对方进程中申请一段内存来存放我们自己的Shel…
原文链接:http://www.cnblogs.com/xhan/archive/2010/10/22/1857992.html 前言: 本来在搞一个Google翻译的接口--向Google翻译发送请求--返回翻译数据... 结果发现发送请求中的一个参数(tk)是需要验证的,验证不通过,报403错误... 网上搜到一个可以自己生成tk值的方法,不过是js写的...省事的想将js代码直接拿来用... 就看到了博客中的一个例子... 0-- function b(a, b) { for (var d…
目录 . 相关阅读材料 . <加密与解密3> . [经典文章翻译]A_Crash_Course_on_the_Depths_of_Win32_Structured_Exception_Handling.pdf . < DAY安全: 软件漏洞分析技术> 2. 数据结构分析 二. KTHREAD KTHREAD(内核层线程对象).再次重复说明一点: windows内核中的执行体(ETHREAD, EPROCESS) 负责各种与管理和策略相关的功能,而内核层(或微内核)(KTHREAD,…
还在为找内核未导出函数地址而苦恼嘛? 还在为硬编码通用性差而不爽吗? 还在为暴搜内核老蓝屏而痛苦吗? 请看这里: 最近老要用到内核未导出的函数及一些结构,不想再找特征码了,准备到网上找点符号文件解析的代码抄抄,也玩玩符号文件解析获取未导出函数,可惜资料寥寥无 几,下了一些代码,发觉编译后问题不断,有的编译通过了却取不到任何地址,弄了半天白弄了,于是静下心来看dbghelp的说明文件(中文的都木有),发 觉dbghelp用起来很不爽,由于版本太多,又是32位和64位什么的,最要命的是dbghelp…
http://stackoverflow.com/questions/3571627/show-hide-the-console-window-of-a-c-sharp-console-application using System.Runtime.InteropServices; [DllImport("kernel32.dll")] static extern IntPtr GetConsoleWindow(); [DllImport("user32.dll"…
文章目录:                   1. 引子: 2. Native Application Demo 展示: 3. Native Application 简介: 4. Native Application 有何妙用: 5. MJ0011 关于 Native Application 的文章整理: 6. 互联网上其他关于 Native Application 的文章整理: 7. 小结: 1. 引子: 其实在好久以前就看了 MJ0011 翻译的那个<Native 应用程序详细>系列的文…
在驱动层(ring0)里执行应用层(ring3)代码,这是个老生常谈的技术,而且方法也挺多. 这种技术的本质:其实就是想方设法在驱动层里把应用层代码弄到应用层去执行. 比如在APC异步调用中,KeInsertQueueApc,KeInitializeApc等函数中可设置一个在ring3层执行一个回调函数,这样就可以回到应用层去执行代码了. 再比如在驱动中查找某个进程的一个线程,然后挂起它,把他的EIP指向需要执行的一段代码(把驱动层需要注入的这段代码叫ShellCodde), 执行完之后再回到线…
这篇随笔专门做SDL的DLL开发. 下面这个版本暂且称为Beta版本吧. /* typedef void (*FUNCTION)(void); HMODULE HDll; HDll = LoadLibrary("SDL_PingGe.dll"); if(HDll == NULL) { printf("Load library failed!\n"); FreeLibrary(HDll); return 0; } FUNCTION fun = FUNCTION(Get…
在某公司实习完,再次回到寝室.还是在学校好. 实习期间的给我的任务就是为项目添加一个强行删除的模块. 背景是硬盘上存储空间不够时,需要删掉老的文件,如果这时后,老的文件被打开了,没有关掉,就无法删除.所以叫我写一个这样的功能. 所谓干净,指的是释放掉这个被占用的句柄.强行删除的方法很多,用驱动直接发磁盘IRP.等等 查阅相关资料后.整理思路如下,如果有同学以后要写这样的功能,可以参考, 1.ZwQuerySystemInformation获取系统当前句柄列表. 2.遍历这个列表,跳过PID==4…
unit APIUnit; { GetProcessModuleHandle API Unit Ring3调用NtQueryInformationProcess实现跨进程获取DLL句柄 } interface USES Winapi.Windows,System.SysUtils; type USHORT = Word; UNICODE_STRING = packed Record Length : USHORT; MaximumLength: USHORT; Buffer : PWideStr…
KTHREAD 线程调度 SDT TEB SEH shellcode中DLL模块机制动态获取 <寒江独钓>内核学习笔记(5)   继续我们的线程相关的数据结构的学习.接下来我们学习 KTHREAD,TEB这两个结构. 1. 相关阅读材料 1. <加密与解密3> 2. [经典文章翻译]A_Crash_Course_on_the_Depths_of_Win32_Structured_Exception_Handling.pdf 3. <0 DAY安全: 软件漏洞分析技术>…
简介        大多数后门或病毒要想初步实现隐藏进程,即不被像任务管理器这样典型的RING3级进程管理器找到过于明显的不明进程,其中比较著名的方法就是通过远程线程注入的方法注入将恶意进程的DLL文件注入系统认可的正常进程,你会发现任务管理器以及找不到独立出现的恶意进程项了.反向连接型后门采用这种技术,注入防火墙认可的进程(例如大部分系统进程,像explorer.exe就很常见)还能够获得一定的穿墙效果.         进程注入虽然已经是将近10年前的技术了,但是今天出现的很多新型黑客技术大…
前言 假设说我们的计算机中安装有杀毒软件,那么当我们有意或无意地下载了一个恶意程序后.杀软一般都会弹出一个对话框提示我们,下载的程序非常可能是恶意程序,建议删除之类的.或者杀软就不提示.直接删除了:或者当我们运行了某一个程序,包括有可疑操作,比方创建开机启动项,那么杀软一般也会对此进行提醒:或者当我们在计算机中插入U盘.杀软往往也会第一时间对U盘进行扫描,确认没有问题后,再打开U盘--上述这些,事实上都属于杀软的"主动防御"功能. "主动防御"简单介绍 杀毒软件通常…
系统产生一个软中断,当线程再次被唤醒时,此线程会首先执行APC队列中的被注册的函数,利用QueueUserAPC()这个API,并以此去执行我们的DLL加载代码,进而完成DLL注入的目的, 1.根据进程名称得进程ID2.枚举该进程中的线程3.将自己的函数插入到每个线程的APC队列中 1 // APCInject(Ring3).cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <windows.h> #include &…
理论知识 SYSENTER 指令是在 Inter Pentium(R) Ⅱ 处理器上作为"高速系统调用"功能的一部分被首次引用的. SYSENTER 指令进行过专门的优化,能够以最佳性能由 Ring3 层切换到 Ring0 层. 微软首次引用 SYSENTER 指令是在 Windows 2000 的系统上,再次之前微软的系统是通过自陷指令 int 0x2E 进入 Ring0 层的系统空间的. 在 Windows 2000 及以后的系统中,假设想要从 Ring3 层进入 Ring0 层,…
调试dll的时候会有一件事情比较烦人,就是dll加载的地址不会很固定(默认设置下编译的dll基址总是0x10000000,多个同基址的dll加载时,后面的肯定会被重定位),这给前后多次调试时对比分析结果造成了一些麻烦,要解决这个问题,有两种办法.方法一:直接修改dll文件PE头中的ImageBase为一个不大可能被占用的地址.但是这个方法有一个小小的局限,就是有些文件是存在校验的,改了文件之后会出一些问题,比如拒绝加载之类的. 这种情况就要用第二种方法了. 方法二:动态修改dll的加载基址 当然…
目录 Ring3挂起进程,跟恢复进程. 一丶简介 二丶代码 Ring3挂起进程,跟恢复进程. 一丶简介 有时候我们做对抗的时候可能会遇到.一个进程常常操作我们.但是我们 可以通过挂起进程来挂起它让它无法操作.当然方法很多.不止这一种. 原理: 原理就是挂起所有线程,我们可以调用NtDLL中低层的函数还挂起进程. NT 函数 NtSuspendProcess NtResumeProcess 第一个是挂起进程,第二个是恢复进程 二丶代码 #include <Windows.h> #include…
有点模仿QQ消息盒子的感觉,代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; using DevComponents.DotNetB…
通过注入DLL修改API代码实现钩取(一) Ox00 大致思路 通过CreateRemoteThread函数开辟新线程,并将DLL注入进去 通过GetProcessAddress函数找到需钩取的API地址. 修改制定的API的前五个字节,让其跳往我们自己设计的函数 函数执行完功能后返回 本实验目标:注入指定dll后隐藏我们的目标进程. 下面两图表示了API钩取之前与API被钩取之后程序的执行过程: 其实明白之后发现原理并不是很难,无非就是先获取到API函数的地址,然后再把原先API的首地址改为J…
前言 我们这次会依据上次的内容,编程实现一个Ring3层的简单的主动防御软件.整个程序使用MFC实现,程序开始监控时,会将DLL程序注入到explorer.exe进程中,这样每当有新的进程创建,程序首先会进行特征码匹配,从而判断目标程序是否为病毒程序,如果是,则进行拦截,反之不拦截.停止监控时,再卸载掉DLL程序.以下就是程序各个部分的代码实现. 封装InlineHook类 对于这次所使用的Hook技术,我打算采取面向对象的方法,用C++封装一个Inline Hook类,便于以后的使用.一般来说…
自从操作系统升级到64位以后,就要不断的需要面对32位.64位的问题.相信有很多人并不是很清楚32位程序与64位程序的区别,以及Program Files (x86),Program Files的区别.同时,对于程序的dll文件应该放到System32文件夹,还是SysWow64,大部分人做的决定是,32位程序放到System32,64位程序放到SysWow64.是不是这样呢,那么今天就由我身边发生的一个案例来详细的说明一下. dll文件不匹配导致数据库无法启动 前段时间,数据库做了一些功能上的…
类库让我们的代码可复用,我们只需要在类库中声明变量一次,就能在接下来的过程中无数次地使用,而无需在每次使用前都要声明它.这样一来,就节省了我们的内存空间.而想要在类库添加什么类,还需取决于类库要实现哪些功能.创建一个类库其实是非常容易的,这篇文章就来向大家分享一下如何在C#中创建dll类库. 类库的文件扩展名是 .dll(Dynamic Linkable Library 即动态链接库文件) 类库的好处: 提高程序的性能. 节省时间. 节省内存空间. 现在我们一起来看下如何轻松创建dll类库的.…
mysql ado.net connector下载地址: http://dev.mysql.com/downloads/connector/net/ 选择版本: Generally Available Releases(1)是发布版(bug什么的较少的版本吧),而Development Releases(2)是开发版 我们采用1版本 Windows (x86, 32-bit), MSI Installer 该版本是window下的安装版,如果你安装了这个版本的话,在本机调试的时候可以不用再次注册…
最近的项目中,使用了GO来开发一些服务中转程序.业务比较简单,但是有一些业务需要复用原有C++开发的代码.而在WINDOWS,用CGO方式来集成C/C++代码并不是太方便.所以用DLL把C++的代码封装起来,然后提供基本的API来完成复用.在这个过程中遇到了一些问题及解决方法,记录下来,也给遇到类似或者同样问题的人一个借鉴. 如果你还不清楚怎么在GO中调用DLL,可以参考这篇文章<WindowDLLs>. Callback的限制 在WINDOWS下调用一些API时会要求传入回调函数,在C/C+…