首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用DLLHSC扫描DLL劫持目标

此存储库包含工具的Visual Studio项目文件(DLLHSC)、API钩子功能的项目文件(detour)、Payload项目文件以及针对x86和x64体系结构的已编译可执行文件。...DLLHSC实现了这个工具的核心功能,detour项目生成一个用于钩住API的DLL文件,Payload项目负责生成用作概念验证的DLL,广大研究人员可以测试可执行文件并查看是否可以通过搜索顺序劫持技术来加载它...该工具只在应用程序目录中放置一个模块(DLL),该模块不属于WinSxS,也不属于KnownDLLs。...Payload DLL在执行时,将在以下路径中创建一个文件:C:\Users\%USERNAME%\AppData\Local\Temp\DLLHSC.tmp作为执行验证。...接下来,工具将启动应用程序,并通过检查临时文件是否存在来报告是否执行了Payload DLL。

1.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    消息钩子的反拦截

    文章中使用了API钩子,您之前必须对此技术有一定了解。 为求完整,文章分为两部分,第一部分为消息钩子的使用,熟悉此技术的读者可以直接跳过此节。第二部分为消息钩子的反拦截。...答案是肯定的,不过缺陷也是有的。 首先简单看看全局钩子如何注入别的进程。...从上面的讨论我们可以得出一个最简单的防侵入方案:在加载hook dll之前hook相应api使得加载失败,不过有一个缺陷:系统并不会因为一次的失败而放弃,每次有消息产生欲call hook时系统都会试图在你的进程加载...剩下一个问题就是不是所有的LoadLibraryExW都应拦截,这个容易解决,比如判断返回地址。下面给出一个例子片断,可以添加一些判断使得某些允许加载的hook dll被加载。...防止jmp型的钩子我没想到好办法 防止调试我可以判断api入口处是否有int3中断代码就可以了吧(简单) 消息钩子的反拦截其实核心是利用API拦截,来取消钩子拦截.

    59530

    使用微软Detours库进行模块枚举

    Detours 是微软开发的一个强大的 Windows API 钩子库,用于监视和拦截函数调用。它广泛应用于微软产品团队和众多独立软件开发中,旨在无需修改原始代码的情况下实现函数拦截和修改。...DetourFindFunction该函数的主要功能是通过模块名称和函数名称来获取函数的地址,这对于在运行时动态加载模块并查找函数地址非常有用。...这在处理被包装或钩子的代码时特别有用,因为它可以跳过钩子或包装层,直接获取原始代码的地址。函数原型其中参数一用于指定指向代码的指针,参数二则用于接收指向全局数据的指针。...PVOID pSrc = (PVOID)&SampleFunction; // 创建一个缓冲区用于存储拷贝的指令 BYTE buffer[16] = { 0 }; PVOID...函数原型该函数仅需要传入一个参数,即上一个模块的句柄。如果是第一次调用该函数,应传入 NULL。

    21110

    红队免杀必会-进程注入--注册表-全局钩

    User32.dll不会检查每个DLL的载入或初始化是否成功,所以不能保证DLL注入一定成功 DLL只会被映射到那些使用了User32.dll的进程中,所有基于GUI的应用程序都使用了User32.dll...,一直存在于进程的地址空间中,这个技术无法做到只在需要的时候才注入我们的DLL 全局钩子注入 Windows系统中的大多数应用都是基于消息机制的,也就是说它们都有一个消息过程函数,可以根据收到的不同消息来执行不同的代码...而OS message queue和application message queue的中间有一个称为钩链的结果如下 如果创建的是一个全局钩子,那么钩子函数必须在一个DLL中。...我们知道,全局钩子是以DLL的形式加载到其他进程空间中的,而且进程都是独立的,所以任意修改一个内存里的数据是不会影响另一个进程的。那么如何实现注入呢?可以在DLL中创建共享内存。...在DLL中创建一个变量,让后将DLL加载到多个进程空间,只要一个进程就该了该变量值,其他进程DLL中的这个值也会改变,相当于多个进程共享也给内存。

    1.4K20

    【CC++教学】劫持?劫持?劫持?!!!

    通俗点就是:当你双击桌面上某个程序的时候,本来系统是要通过调用CreateProcess函数创建一个进程,但是指向这个函数的指针被修改了,系统跑去调用了hacker自定义的那个函数。...劫持自身 我们先来写一个简单小程序,来实现对自身函数调用的拦截试试。在这里呢主要是拦截程序中调用的system函数。让它不能干活。...答案是肯定的,劫持其他程序有多种方式,比如全局hook,dll注入等。这里介绍下dll注入。我们打算拦截CreateProcess创建进程这个函数,让它创建不了进程。...这里在程序属性里设置一下,配置类型改为dll.然后生成 ? ? ? 哎,截不了那么长的图大家凑合着看一下。生成了dll以后,咱们借助咱的dll注入工具来测试一下效果吧。...这里再写一个创建进程的小程序测试一下,每5秒打开一个记事本。 ? ? ? 可以看到。注入之后,notepad进程不再创建,而是弹出了交保护费的窗口。

    2.9K30

    windows DLL注入之注册表注入

    API 或者消息做 hook 操作,为此,windows 为美中 hook 类型维护了一个钩子链表,我们可以通过一个系统 API 来完成对整个系统中所符合此机制的函数 API 或者消息 hook。...以下用一个表格来对个中hook(按照技术本质,不按照技术实现的具体细节)做一个分类: windows提供的消息hook hook 技术 自定义hook inline Hook EAT...2.1 :DLL 注入的几种技巧或者方法: a) 注册表注入 b) ComRes 注入 c) APC 注入 d) 消息钩子注入 e) 远程线程注入 f) 依赖可信进程注入 g)劫持进程创建注入...DLL注入到使用了User32.dll的GUI程序中(GUI程序中大多使用了User32.dll)。...CUI程序大多不使用User32.dll,所以就不能使用注册表注入。 使用了User32.dll的GUI程序中(GUI程序中大多使用了User32.dll)。

    2.7K41

    一种在注入进程中使用WTL创建无焦点不在任务栏出现“吸附”窗口的方法和思路

    (转载请指明出处)以记事本为被注入程序为例: ?         我用的注入和HooKApi方案是采用微软的detour库。...CreateProcessW的参数,倒数第二个参数是我们要注入的DLL的路径,最后一个参数是真实的CreateProcessW的函数入口地址。...该函数的实现细节是:         1 以挂起的方式启动被注入程序         2 在内存中,修改被注入程序的导入表信息,在表中增加一个我们要注入的DLL中的导出函数         3 恢复被挂起的进程...这相当于我们窗口的消息循环使用了被注入进程的顶层窗口的消息循环。        ...2 注入进程后,启动一个线程,该线程负责创建窗口,同时在该线程中再启动一个监视被注入进程顶层窗口的线程,该线程将根据其得到的被注入进程窗口的位置大小状态等信息告诉我们窗口应该做何种处理。

    1.5K40

    CC++ 实现常用的线程注入

    各种API远程线程注入的方法,分别是 远程线程注入,普通消息钩子注入,全局消息钩子注入,APC应用层异步注入,ZwCreateThreadEx强力注入,纯汇编实现的线程注入等。...()来加载动态链接库,我们只需要在上面代码的基础上稍加改进就可以实现64位进程的注入了..../x64.dll"); system("pause"); return 0; } 实现普通消息钩子注入: Windows提供的钩子类型非常多,其中一种类型的钩子非常实用,那就是WH_GETME SSAGE...,如果是我们需要Hook的进程,则加载Dll到指定进程中,如果不是则不执行任何操作,这样一来即可实现指定进程注入....可以在软中断时向线程的APC队列插入一个函数指针,如果我们插入的是Loadlibrary()执行函数的话,就能达到注入DLL的目的,不论如何目标程序必须有执行SleepEx()或者WaitForSingleObjectEx

    71410

    python dll注入 网络_dll注入

    三、什么是dll注入: ​ 我们可以利用dll机制来实训进程通信或控制其它进程的应用程序。 ​...四、什么时候需要dll注入 应用程序一般会在以下情况使用dll注入技术来完成某些功能: 1.为目标进程添加新的“实用”功能; 2.需要一些手段来辅助调试被注入dll的进程; 3.为目标进程安装钩子程序(...API Hook); 五、dll注入的方法 一般情况下有如下dll注入方法: 1.修改注册表来注入dll; 2.使用CreateRemoteThread函数对运行中的进程注入dll; 3.使用SetWindowsHookEx...函数对应用程序挂钩(HOOK)迫使程序加载dll; 4.替换应用程序一定会使用的dll; 5.把dll作为调试器来注入; 6.用CreateProcess对子进程注入dll 7.修改被注入进程的exe的导入地址表...像这样的消息钩子功能是Windows提供的最基本的功能,MS Visual Studio中提供的SPY++就是利用了这一功能来实现的,SPY++是一个十分强大的消息钩取程序,它能够查看操作系统中来往的所有消息

    2.1K30

    浅谈hook攻防

    当创建一个钩子时,WINDOWS会先在内存中创建一个数据结构,该数据结构包含了钩子的相关信息,然后把该结构体加到已经存在的钩子链表中去。新的钩子将加到老的前面。...hook来从防守方制定hook检测的策略和攻击方如何绕过hook检测两方面来浅谈hook技术的攻防 Inline hook API函数都保存在操作系统提供的DLL文件中,当在程序中使用某个API函数时...hook攻防 这里我选择使用MessageBoxA函数来进行hook的检测,因为MessageBoxA在hook之后能够比较清晰的看到结果 这里我首先使用win32资源文件来创建一个图形窗口,功能是点击开始就会弹窗...,通过远程线程注入来hook 首先看一下没有hook的效果 通过远程线程注入,可以看到已经注入成功 然后这里再点击开始,可以看到文本框的内容已经是我们自己的内容 这里到汇编层面去看一下hook前后的变化...进行远程线程注入,这里可以看到被检测到hook 攻 当检测程序使用了全代码校验的情况下,就不能使用常规的方式去进行hook,这里我们去逆向分析一下代码 硬件断点 首先定位到MessageBox,尝试直接软件断点

    1.1K10

    .NETC# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑

    但有例外,WH_KEYBOARD_LL 或者 WH_MOUSE_LL 这两个是不需要注入 dll 的,因此可以挂接钩子。...嗯,反正我们创建窗口监听消息都已经大量调用 user32.dll 的 API 了,这 dll 肯定已经加入到我们的进程中了,所以我们把这个传入到参数中是可以通过验证的。...对于低级钩子来说,SetWindowsHookEx 需要一个有效的模块句柄进行检查,但实际上此 API 执行时根本没有使用这个模块。...在 CreateWindowEx 创建窗口时传入的消息处理函数会仅处理特定窗口的消息,然而当通过钩子的方式来处理消息的话,无法精确定位到某个特定的窗口,只能针对消息循环所在的线程。...然而 .NET 程序集无法被注入到其他进程;随便用一个其他 dll 时,里面没有被挂接的函数地址,在注入后就会导致目标进程崩溃。

    1.5K20

    关闭反恶意软件保护(第 1 部分)-Windows Defender 防病毒

    绕过或禁用进程上设置的 PsProtectedSignerAntimalware-Light 保护 3. 对具有完全访问权限的进程有一个句柄,或者至少找出一种在进程中注入 dll 的方法。...简单的任务,可以通过从trustedinstaller进程中窃取它来完成,也可以使用LogonUserExExW .或NtCreateToken创建令牌.........此功能也称为“篡改保护”,可防止任何无人看管的注入任何用户模式 ​​Windows Defender 服务。 不幸的是,我不得不转向 DLL 劫持错误来完成这项工作。耻辱......所以总而言之,我们不能注入代码,也不能注入 DLL,也不能劫持反恶意软件可执行文件(例如 DLL)。 不幸的是,微软在那里允许了一个小缺陷。...创建  %ProgramData%\Microsoft\Windows Defender\Platform\10.18.3009.5-0\MpSvc.dll(mpsvc.dll 必须是一个目录,这样我们才能导致

    2.6K20

    如何创建一个用弹出窗口来查看详细信息的超链接列

    如何创建一个用弹出窗口来查看详细信息的超链接列出处:www.dotnetjunkie.com   JavaScript...强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码 如何创建一个用弹出窗口来查看详细信息的超链接列 出处:www.dotnetjunkie.com...      这篇文章来自于一位忠实的DotNetJunkie的建议,他最初发了一封email给我们, 要求我们给出一个例子来说明如何在DataGrid中设置一个当用户点击时能够弹出 显示其详细信息的新窗口的超链接列...这篇文章包含了两个webforms和一个css第一个webform包含了一个DataGrid,它显示了Northwind数据库中的一列产品还有写着"SeeDetails"的超链接。...只要点击了这个链接,就会调用JavaScript的Window.Open方法来打开一个新的窗口。在一个Url中包含了用户想详细了解的产品的ProductId的Query String 参数。

    1.8K30

    外挂基础_开挂的正确姿势

    鼠标模拟技术   几乎所有的游戏中都使用了鼠标来改变角色的位置和方向,玩家仅用一个小小的鼠标,就可以使角色畅游天下。那么,我们如何实现在没有玩家的参与下角色也可以自动行走呢。...,如读者感兴趣的话可以找一个游戏试试,最好仅做测试技术用。   首先,我们需要编写一个全局钩子,使用它来激活外挂,激活键为F10。...创建全局钩子步骤如下:   (1).选择MFC AppWizard(DLL)创建项目ActiveKey,并选择MFC Extension DLL(共享MFC拷贝)类型。   ...接着,我们还需要创建一个外壳程序将全局钩子安装了Windows系统中,这个外壳程序编写步骤如下:   (1).创建一个对话框模式的应用程序,项目名为Simulate。   ...● 如何将外挂代码(自定义的替换函数代码)注入到游戏程序进程地址空间?

    2.3K10

    自由控制程序运行方式的编程技巧

    ---- 自由控制程序运行方式的编程技巧 前言 本篇继续阅读学习《有趣的二进制:软件安全与逆向分析》,本章是自由控制程序运行方式的编程技巧,主要介绍调试器的原理、代码注入和API钩子 一、调试器 本节给出了一个简单的调试器源码..." 用OD打开任意一个程序,能在模块列表中看到 loging.dll 3、通过 CreateRemoteThread 在其他进程中创建线程 CreateRemoteThread 这个 API 函数可以在其他进程中创建线程...InjectDLLtoProcessFromPid(DWORD dwPid, TCHAR *szDllPath); //创建新进程并注入 DLL int InjectDLLtoNewProcess(TCHAR...对上一小节的拓展:只要我们能够将任意函数(代码)事先复制到目标进程内部,就可以用 CreateRemoteThread 来运行它 一个对 IE(32 位版本)注入 func 函数的例子 // codeinjection.cpp...Address Table,IAT) 2、用 Detours 实现一个简单的 API 钩子 本小节利用微软研究院发布的 API 钩子库 Detours :http://research.microsoft.com

    67310

    14种DLL注入技术

    因为直接调用了RtlCreateUserThread创建线程,绕过了win7/vista对这方面的检测所以可以注入到系统进程中(比如winlogon.exe),当然此方法也有缺陷,因为没有和csrss通讯...第三种 APC注入 通过CreateRemoteThread函数创建一个线程就可以使用远程进程中的一个函数。然而,线程创建需要系统开销,所以调用一个现有的线程会更加高效。...第七种 全局钩子注入 利用windows的消息机制,可以在事件发送到os之间设置一条钩链,来钩取不同的消息,如以下代码,利用SetwindowsHookEx可以钩取一个键盘消息。...并且调用钩子处理函数来处理这个消息,所达到的效果和dll注入是一样的(执行dll内部的代码) 第八种 DLL劫持 DLL劫持原理见链接 https://blog.csdn.net/liuhaidon1992...新进程的主线程被创建为挂起状态,直到ResumeThread函数被调用才会运行。接下来,恶意软件需要用恶意的有效载荷来替换合法文件的内容。

    4.6K41

    常见注入手法第四讲,SetWindowsHookEx全局钩子注入.以及注入QQ32位实战.

    .附加参数. ); 5.钩子回调 钩子回调根据SetWindowsHookEx参数1来设定的.比如如果我们设置WH_CBT 那么我们设置的回调函数就是CBT回调....那么鉴于学习.说一下注入的步骤. 1.调用SetWindowsHookEx设置钩子. 2.在设置过程中.需要一个回调.所以我们填入一个回调. 3.回调函数中调用CallNextHookEx函数.....那么我们还需要一个外部程序来调用我们的导出函数 SetHOOK() 以及 UnHOOK....一个是Loadlibaray()  GetProcAddress() 第一个是获取dll的实例句柄. 第二个是根据实例句柄以及函数名来获取函数的地址. 也称为函数指针....上图我们写的这么多.并没有针对QQ或者其他32位程序注入DLL. 为什么会注入了DLL. 原理:   原理就是我们的窗口程序. 直接使用DLL里面的SetWindowsHookEx设置了一个回调.

    14.5K30
    领券