C 模糊DLL的安全性

C 模糊DLL的安全性,c,security,dll,C,Security,Dll,我有一个非常模糊的本机win32 dll,功能未知,它似乎没有从其他dll调用任何函数。我的问题是,从理论上讲,该代码是否能够修改其代码以造成任何伤害。分问题: -动态加载dll的代码部分默认为只读还是可写? -如果代码不使用任何其他dll,它仍然可以 做一些需要来自系统dll的代码的事情? 如果加载dll的函数在默认情况下未加载,它如何加载另一个dll并找到一个函数 提前谢谢 此代码是否能够修改其代码以造成任何伤害 对。事实上,它甚至不需要改变自己就可能造成伤害 动态加载dll的代码部分默认为

我有一个非常模糊的本机win32 dll,功能未知,它似乎没有从其他dll调用任何函数。我的问题是,从理论上讲,该代码是否能够修改其代码以造成任何伤害。分问题: -动态加载dll的代码部分默认为只读还是可写? -如果代码不使用任何其他dll,它仍然可以 做一些需要来自系统dll的代码的事情? 如果加载dll的函数在默认情况下未加载,它如何加载另一个dll并找到一个函数

提前谢谢

此代码是否能够修改其代码以造成任何伤害

对。事实上,它甚至不需要改变自己就可能造成伤害

动态加载dll的代码部分默认为只读还是可写

默认情况下,DLL能够自行修改。他们需要调用
VirtualProtect
,但这是完全可能的

如果一个代码不使用任何其他dll,它仍然能够做一些需要系统dll中的代码的事情

DLL可以加载任何系统DLL并调用它选择的任何函数

如果加载dll的函数在默认情况下未加载,它如何加载另一个dll并找到一个函数


通过调用
LoadLibrary
GetProcAddress
。如果DLL真的什么也不导入,那么获取
GetProcAddress
就很困难了。但并非不可能。如果Windows能够做到这一点,那么DLL肯定也能做到。它可以做的一件事是读取加载到每个进程中的内核32 DLL的内存内容。它可以解析PE导出表,并使用该表查找
GetProcAddress

的地址。我不知道堆栈溢出是如何工作的,所以我只想在这里回答,对不起:)如果当前版本不调用任何函数,它如何调用loadlibrary。如果它不知道virtualprotect的地址,它怎么能调用virtualprotect呢。这是我不理解的部分。这两个函数都在内核32中,它被加载到所有进程中。当然,如果您的DLL有一个空的导入表,那么它将需要通过一些邪恶的手段找到
GetProcAddress
的地址。但这当然是可能的。一旦它拥有
GetProcAddress
,它就可以访问任何内容。您如何确定此DLL“似乎不调用其他DLL的任何函数”?老实说,我发现您的答案太模糊,但可能是我的错。我不知道我期望的是什么。嗯,我得说答案的模糊性与问题的模糊性是一致的请注意,不要在手机上写答案,因为在评论未完成时,您会意外按下enter键,看起来像灌水器。很抱歉。回到主题:当前代码不调用任何东西,其中没有调用或类似的指令,它只在dll内跳转。此dll中没有导入任何内容。它如何解析内存中kernel32dll的内容?它是否映射到特定地址?