2018/11/05-dll和基本dll结构-《恶意代码分析实战》

fingerprint fingerprint     2023-01-15     191

关键词:

  动态链接库(DLL)是使用库来在多个应用程序之间共享代码的Windows特有方式。一个DLL程序是不能独自运行的可执行文件,但它可导出一些被其他应用程序使用的函数。

  静态库是在DLL程序引入之前的标准方案,并且仍在使用,但是它们更加少见一些。现在Windows系统主要使用DLL程序,而不是静态库,主要优势是被DLL程序使用的内存可以在正运行的进程之间共享。例如,若一个库被两个不同的运行进程使用,静态库的代码会占用两倍内存,因为它会被载入内存中两次。

  另一个使用DLL程序的主要优势,是在发布一个可执行文件时,你可以使用Windows系统上已知的DLL程序,而无须去重新发布它们。这帮助软件开发着和恶意代码作者最小化发布软件的大小规模。

  DLL程序也是一种有用的代码复用方式。例如,大型软件公司会创建一些有通用功能的DLL,而这些DLL对于他们的应用程序来说是共用的。然后当他们发布应用程序时,会发布主要.exe文件和应用程序所使用的任何DLL程序。这允许它们维护一个单一公用的代码库,并只在需要时发布它。

  基本上,DLL文件看起来几乎和.exe文件一模一样。DLL使用PE文件格式,并且只有一个单一标志,指示这个文件是一个DLL,而不是一个.exe。DLL经常有更多导出函数,并且通常导入函数更少。除了那个标志之外,一个DLL和一个.exe之间没有实质的区别。

  DLL的主函数是DllMain。它没有标记,而且并不是一个DLL中的导出导出函数,但它在PE头中被指定为文件的入口点。任何时候一个进程加载或卸载库,会创建一个新线程,或一个已存在的线程结束时,这个函数都会被调用来通知DLL。这个通知允许DLL来管理每个进程或每个线程的资源。

  多数DLL没有线程粒度的资源,并且它们忽略由线程活动引起对DllMain的调用。然而,如果DLL有必须在线程粒度进行管理的资源,那么这些资源可以为分析师提供一些提示,来了解这个DLL的目的。

 

jvm的基本结构和jvm内存结构

JVM的基本结构和JVM的内存结构 这里介绍一下JVM在启动后,作为操作系统的一个进程的基本结构,以及从操作系统角度看,JVM如何管理它从操作系统里申请来的内存的,也就是JVM的内存结构或者叫JVM内存模型。 1、JVM的基... 查看详情

norflash和nandflash基本结构和特点

...有很多种,如EPROM、EEPROM、NORFLASH和NANDFLASH,前两者已经基本被淘汰了,因此我仅关注后两者,本文对FLASH的基本存储单元结构、写操作、擦除操作和读操作的技术进行了简单介绍,对了NOR和NAND由存储结构决定的特性和应用场合... 查看详情

树二叉树存储结构二叉数遍历&数据结构基本概念和术语(代码片段)

...章目录树、二叉树、存储结构、二叉数遍历&数据结构基本概念和术语数据结构基本概念和术语第四章树的基本概念二叉树的基本概念什么是二叉树二叉树的基本/特殊状态二叉树的存储结构链式存储结构顺序结构存储二叉树的... 查看详情

C ++ makefile构建多个dll和项目结构

】C++makefile构建多个dll和项目结构【英文标题】:C++makefilebuildingmultipledllandprojectstructuring【发布时间】:2015-07-1100:29:08【问题描述】:我已尝试寻找答案但无济于事,因此鉴于我的项目具有以下结构makefile./srcstrings.cppnetworking.cpp./... 查看详情

第一课:数据结构的基本概念和术语

数据结构    本课主题:数据结构的基本概念和术语教学目的:了解数据结构的基本概念,理解常用术语教学重点:基本概念:数据与数据元素教学难点:数据元素间的四种结构关系。授课内容:一、数据、数据元... 查看详情

图的基本概念;图的邻接矩阵和邻接表存储结构

文章目录图的基本概念图的邻接矩阵和邻接表存储结构图的基本概念图的邻接矩阵和邻接表存储结构 查看详情

基本数据结构和查找算法

...人不认为js中算法数据结构不重要,毕竟这是程序开发的基本功。本文还会根据博主学习进展和时间安排不定期更新数据结构部分列表functionList()this.listSize=0;this.pos=0;this.dataStore=[];//查找this.find=function(eleme 查看详情

基本数据结构-栈和队列

摘要  本章介绍了几种基本的数据结构,包括栈、队列、链表以及有根树,讨论了使用指针的简单数据结构来表示动态集合。本章的内容对于学过数据结构的人来说,没有什么难处,简单的总结一下。1、栈和队列  栈和队... 查看详情

队列的定义和两种存储结构下队列的基本操作

文章目录队列的基本概念队列的顺序存储结构队列的链式存储结构队列的基本概念队列的顺序存储结构队列的链式存储结构 查看详情

java基本数据结构和算法(代码片段)

查看详情

如何在 Java 中从 C DLL 加载和使用结构和函数?

】如何在Java中从CDLL加载和使用结构和函数?【英文标题】:HowtoLoadandUseStructsandFunctionsfromaCDLLinJava?【发布时间】:2016-12-1920:14:32【问题描述】:我有一个用于打开和读取特定文件类型的Cdll。我创建了一个pythonSDK,它可以加载dll... 查看详情

堆栈的定义和两种存储结构下堆栈的基本操作

文章目录栈的基本概念栈的顺序存储结构栈的链式存储结构栈的基本概念栈的顺序存储结构栈的链式存储结构 查看详情

树二叉树存储结构二叉数遍历&数据结构基本概念和术语(代码片段)

...章目录树、二叉树、存储结构、二叉数遍历&数据结构基本概念和术语数据结构基本概念和术语第四章树的基本概念二叉树的基本概念什么是二叉树二叉树的基本/特殊状态二叉树的存储结构链式存储结构顺序结构存储二叉树的... 查看详情

数据结构之树的基本运算和存储结构

  树的运算:寻找某节点插入、删除某节点遍历树中每个节点先根遍历后根遍历层次遍历  树的存储结构:   1.双亲存储结构typedefstruct{ElemTypedata;intparent;}PTree[Maxsize];  2.孩子链存储结构typedefstructnode{ElemTypedata;structno... 查看详情

jvm基本结构1

1.JVM启动流程   javaxxx---> 装载配置---->根据配置寻找JVM.dll--->初始化JVM获得JNIEvn接口--->找到main方法并运行              &nb 查看详情

基本流程图

...流都可以由顺序结构、选择(分支)结构和循环结构这三种基本结构来表示,基本结构之间可以并列、包含。  顺序结构是最简单的程序结构,也是最常用的程序结构,只要按照解决问题的顺序写出相应的语句就行,它的执行顺... 查看详情

局域网基本概念和体系结构

脑图时刻局域网局域网拓扑结构局域网传输介质局域网介质访问控制方法局域网的分类##IEEE802标准MAC子层和LLC子层 查看详情

6.队列

...sp; array,list,linkedlist,dll2.实现队列的ADT需要有两个基本操作:push(入队)pop(出队)用列表实现:比如说他 查看详情