dll文件

VS C#生成dll,C#和unity工程调用

匿名 (未验证) 提交于 2019-12-03 00:25:02
1, C# 生成dll a, vs新建C#类库工程生成dll,对应的cs文件。 DllSuccess.cs using System ; using System . Collections . Generic ; using System . Linq ; using System . Text ; //using System.Threading.Tasks; namespace DllSuccess { public class Poem { public void PrintPoem () { Console . WriteLine ( "白日依山尽,黄河入海流!" ); } public static void PrintPoems () { Console . WriteLine ( "且将新火试新茶,诗酒趁年华。" ); } public static int UnityAdd ( int a , int b ) { int c = a + b ; return c ; } public static void WritePoem ( char [] strs_poem ) { String str_poem = "人有悲欢离合,月有阴晴圆缺。此事古难全!" ; char [] str = str_poem . ToCharArray (); int len =

查找dll依赖文件的方法

匿名 (未验证) 提交于 2019-12-03 00:22:01
具体操作方式为:打开VS自带的”Visula Studio命令提示”命令行工具,切换到要分析的dll文件所在目录下(也可不切换而用全路径), 执行:dumpbin -imports MyDll.dll 其中”MyDLL.dll”为你要分析的dll文件名,为了方便浏览,最好在命令后面接重定向符“>”定位到一个文本文件中。 如:dumpbin -imports MyDll.dll > result.txt 文章来源: 查找dll依赖文件的方法

DLL注入和API Hook

匿名 (未验证) 提交于 2019-12-03 00:21:02
DLL注入和API Hook 第一篇 dll注入 一、什么是dll注入   在Windows操作系统中,运行的每一个进程都生活在自己的程序空间中,每一个进程都认为自己拥有整个机器的控制权,每个进程都认为自己拥有计算机的整个内存空间,这些假象都是操作系统创造的。理论上而言,运行在操作系统上的每一个进程之间都是互不干扰的,即每个进程都会拥有独立的地址空间。比如说进程B修改了地址为0x400000的数据,那么进程C的地址为0x400000处的数据并未随着B的修改而发生改变,并且进程C可能并不拥有地址为0x400000的内存(操作系统可能没有为进程C映射这块内存)。因此,如果某进程有一个缺陷覆盖了随机地址处的内存(这可能导致程序运行出现问题),那么这个缺陷不会影响到其他进程所使用的内存。   正是由于进程的地址空间是独立的,因此我们很难编写能够与其它进程通信或控制其它进程的应用程序。   所谓的dll注入即是让程序A强行加载你给定的a.dll并执行你给定的a.dll里面的代码。注意,你所给定的a.dll原先并不会被程序A加载,但是当你向程序A注入了a.dll后,程序A将会执行a.dll里的代码,这个时候,你的a.dll就进入了程序A的地址空间,你就可以为所欲为了。 二、什么时候需要dll注入   应用程序一般会在以下情况使用dll注入技术来完成某些功能:     1.为被注入的进程添加新的

C++ 导出dll 类成员变量问题debug记录

匿名 (未验证) 提交于 2019-12-03 00:19:01
今天因为项目原因需要将ubuntu下的工程移植到windows平台。在ubuntu下面我们使用的是qmake来构建的工程,在windows上面移植的时候,将工程构建软件替换为cmake。 在移植的时候,也在吐槽windows的版本管理,什么vs2013的库不能用于vs2015编译链接,debug版本不能链接release版本之类的设定。我反正觉得这些设定挺奇葩的,在实际情况中,我们常常需要链接一些第三方库,如果是外部人员提供的话,那么就会只有release版本,调试起来就很难受了。 在移植成功后遇到了一个问题,这个问题折腾了我还比较久的时间。就是在我们工程中自己编写的动态库dll中需要导出类。而在我们类是用单例做成的。所以要导出的类中有一个静态成员变量。在主程序链接的时候一直报错,没有找到该静态变量。 代码结构类似这样: dll h文件 #pragma once #include "stdio.h" #ifdef _DLL_INNER #define _EXPORT _declspec(dllexport) #else #define _EXPORT _declspec(dllexport) //#define _EXPORT _declspec(dllimport) #endif class _EXPORT ss { public: static ss * Ins() { if

C++ 函数指针(涉及dll)

匿名 (未验证) 提交于 2019-12-03 00:12:02
本篇参考资料: <Professional C++, 4th Edition> 在 上一章 中, 已经粗略的介绍了 智能指针 unique_ptr 如果觉得本章的内容不适合你, 可以看 C++指针知识点目录 同时在 指针基础部分 中, 提到了 指针是指向着一个地址 , 但是我们很容易产生一个问题: 函数也有地址, 那么 指针能否指向函数 ?---- 当然可以 如果你是 信息学竞赛的 , 没有必要了解(没有什么用处) 本篇是主要关于开发的 , 现在步入正题 在讲这个之前, 了解一下: dll 文件 我们也会发现, 在许多windows应用程序目录中, 都存在这个东西 请点开上面的链接, 了解一下 看完之后, 我们可以知道, 所谓 dll, 就是 将某些函数或功能( 比如说类) 封装于此 , 等着调用 如何调用?------ 指针 由于内容超过了要讨论的范围, 只做简单的解释: 比如说编写一个返回 string 的 "Hello World!": #ifndef _DLL_H_ #define _DLL_H_ #include <string> using std :: string ; #if BUILDING_DLL #define DLLIMPORT __declspec ( dllexport ) #else #define DLLIMPORT __declspec (

.dll与.lib的关系总结

匿名 (未验证) 提交于 2019-12-03 00:08:02
环境:Win10 Vs2015 Debug+x64 新建一个C++的空项目 项目属性里首先配置好目标类型(.dll),再配置输出.lib和.dll的文件夹 //Function.h #pragma once extern "C" _declspec(dllexport) void test(); //Function.cpp #include"Function.h" #include <iostream> using namespace std; void test() { cout << "Hello World" << endl; } //TestDll.cpp #include<Windows.h> using namespace std; BOOL APIENTRY DllMain(HANDLE hModulce, DWORD ul_reason_for_call, LPVOID lpReaserved) { return TRUE; } .lib有两种类型,一种是静态链接库(Static Link Library),它里面是函数实现的代码,是编译完很多个.obj的集合,使用时直接链接到主程序一起写进.exe(.dll)中,还有一种是动态链接库(Dynamic Link Library)的导入库(Import Library),里面没有实现的代码

用IKVMC将jar转成dll供c#调用

匿名 (未验证) 提交于 2019-12-03 00:08:02
Ŀ¼ 前言 ikvmc介绍 ikvmc下载安装 下载并解压 设置环境变量 jar->dll 常用参数说明 具体操作 解决方案 实习到现在所需要的工具类给的都是jar包,但是我需要在.net环境下去实现,如果重新下的话回合那麻烦,因此如果能将c#能够调用jar那就太棒了 IKVMC 可以将jar转成dll,到现在为止已经成功转换3个jar为dll,期间碰壁无数,在此写下此篇文章希望能帮助到有需要的人。 这并没有什么很大问题, 下载 压缩包解压出来,解压出来的主要文件在bin目录下 在win8.1/win10下的步骤如下: 通过 计算机/此电脑 (根据系统名称而不同)右击-> 属性 -> 高级系统设置 -> 环境变量 找到系统变量下面的path添加路径如_ C:\ikvmc-XXX\bin\; _ 运行命令行 cmd ,输入 ikvmc 查看帮助 输出如图所示,则准备工作已经完成 jar->dll -target:library 使用方法: ikvmc -target:library a.jar 由于我们的目的是把jar转为dll,此参数就是此作用 -reference:<filespec>(-r:<filespec>) 使用方法: ikvmc -target:library a.jar -r:b.dll 该方法作用若a.jar存在第三方的引用,则我们需要指明需要引用的dll 注意

C++笔记――创建一个动态链接库工程

匿名 (未验证) 提交于 2019-12-03 00:03:02
前话 在我们安装一些软件时,进入软件安装目录会经常看到.dll格式文件,系统system目录也存在许多dll文件 在软件游戏(window平台)更新的时候,很大部分是下载dll文件 所以会好奇这是什么? 简介 DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件。 意义 DLL文件中存放的是各类程序的函数(子过程)实现过程,当程序需要调用函数时需要先载入DLL,然后取得函数的地址,最后进行调用。使用DLL文件的好处是程序不需要在运行之初加载所有代码,只有在程序需要某个函数的时候才从DLL中取出。另外,使用DLL文件还可以减小程序的体积。 作用 在 Windows操作系统中,每个程序都可以使用该 DLL 中包含的功能来实现“打开”对话框。这有助于促进代码重用和内存的有效使用。 通过使用 DLL,程序可以实现模块化,由相对独立的组件组成。例如,一个记账程序可以按模块来销售。可以在运行时将各个模块加载到主程序中(如果安装了相应模块)

aardio调用dll

匿名 (未验证) 提交于 2019-12-02 23:49:02
刚知道aardio这个不错的玩具,可惜作者停更了,贴一个调用dll的例子备用吧 vc代码 extern "C" _declspec(dllexport) int _stdcall my_export(int a,int b) { return a + b; } def文件 LIBRARY "my_dll" EXPORTS my_export aardio代码 mainForm.button.oncommand = function(id,event){ //后面默认是stdcall调用,写错会各种崩溃 dll = raw.loadDll("D:\projects\vc\my_dll\Debug\my_dll.dll"); /* MyExportFunc = dll.api("my_export","int(int, int)"); result = MyExportFunc(1, 2); */ //函数可以直接调用 result = dll.my_export(1,2) win.msgbox(tostring(result)) }

36.浅谈DLL劫持

匿名 (未验证) 提交于 2019-12-02 23:43:01
最近在搞内网,需要实现免杀后门,大佬推荐了dll劫持,DLL劫持后,能干很多事情,比如杀软对某些厂商的软件是实行白名单的,你干些敏感操作都是不拦截,不提示的。还有留后门,提权等等。本文主要介绍如何检测dll劫持,以及实例演示。 DLL劫持 dll文件是什么? DLL(Dynamic Link Library)文件为动态链接库文件,又称"应用程序拓展",是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件。 如果在进程尝试加载一个DLL时没有指定DLL的绝对路径,那么Windows会尝试去按照顺序搜索这些特定目录时下查找这个DLL,只要黑客能够将恶意的DLL放在优先于正常DLL所在的目录,就能够欺骗系统优先加载恶意DLL,来实现"劫持" dll原理利用 windows xp sp2֮ǰ Windows查找DLL的目录以及对应的顺序: 1. 进程对应的应用程序所在目录; 2. 当前目录(Current Directory); 4. 16位系统目录; 6. PATH环境变量中的各个目录; 例如:对于文件系统