能力值:
( LV2,RANK:10 )
|
-
-
2 楼
友情帮顶
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
不知什么原因,为啥我的dll函数都没办法执行,总是报错,能不能帮忙看看
|
能力值:
( LV7,RANK:110 )
|
-
-
4 楼
最好不要这样做,这样做安全性未知,你要是能自己修改自己的程序,我病毒也能给你加代码,到时候你这个程序就变成了一个漏洞,你安排一个漏洞给自己找麻烦么?windows之所以禁止你们这样做,原因是:以前的旧Windows是不禁止这样修改的,导致了程序的不稳定,以及病毒利用这个漏洞。所以,希望你不要这样做。
|
能力值:
( LV7,RANK:110 )
|
-
-
5 楼
你既然希望能操作数据,又希望数据能从模块文件中读出,为什么不这样设计:将默认配置放在模块中,运行时向程序所在目录创建一个临时目录,然后给与这个目录写入权限,再将配置文件写入这个目录,再次运行程序时,只需检查是否有临时文件,如果有直接读取,没有的话,重写文件就行了,这样既安全又方便
|
能力值:
( LV7,RANK:110 )
|
-
-
6 楼
给你个意见,有公开的安全的方法,就尽量使用公开的安全的方法,不要使用太多的未公开的方法,因为它们的安全性实在不可靠!(我就是一个例子, 使用未公开方法编程,结果玩坏了两块硬盘)
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
漏洞什么的,平台问题,连远程注入什么的都存在十多种方法,安全什么的我就不指望了,只是为了达到封装的目的,才这样想的,不过还是谢啦
|
能力值:
( LV7,RANK:110 )
|
-
-
8 楼
hehelyc
漏洞什么的,平台问题,连远程注入什么的都存在十多种方法,安全什么的我就不指望了,只是为了达到封装的目的,才这样想的,不过还是谢啦
即使你不考虑安全,我也不建议你这样做,任意修改组成模块是很危险的事!任意修改PE节,我们都知道PE节空间有限,修改出PE节的空间就麻烦了,而且用这个宏编译出来的空间是按一定字节对齐的,剩余空间很小,编译出来的节基本只能容纳原来的数据和原来的数据中未对齐的剩余空间而已,而且这种加载方法有个严重的问题,就是如果你的DLL中使用了SEH错误处理的话,那么轻则函数无法运行,重则加载DLL时就会崩溃!如果你真要这样做,建议你在模块文件尾部进行添加数据操作,在尾部添加数据,不用考虑节的剩余空间,还可以加入HASH值,用来验证你的DLL模块!
|
能力值:
( LV7,RANK:110 )
|
-
-
9 楼
hehelyc
不知什么原因,为啥我的dll函数都没办法执行,总是报错,能不能帮忙看看
loaddll这个库函数没有处理DLL模块中的SEH错误处理链,DLL中SEH处理链的安装函数调用要比DllMain早,如果DLL中有SEH错误处理的话,由于模块的SEH没有初始化,会导致调用函数失败!这就是你的DLL函数无法运行的原因! windows加载DLL的时候,是先检查模块是否有SEH初始化函数,如果有,优先调用它,然后才会调用DllMain,如果一个模块有SEH初始化函数,而没有执行的话,调用函数很可能会失败!
|
能力值:
( LV7,RANK:110 )
|
-
-
10 楼
hehelyc
不知什么原因,为啥我的dll函数都没办法执行,总是报错,能不能帮忙看看
loaddll是没有正确处理加载的DLL模块中IMAGE_DIRECTORY_ENTRY_EXCEPTION目录的异常处理表数据,以及IMAGE_DIRECTORY_ENTRY_TLS目录的线程局部变量的数据,这两个目录中的数据会被广泛使用到的,IMAGE_DIRECTORY_ENTRY_EXCEPTION目录的异常处理表数据由异常处理的初始化函数处理,而IMAGE_DIRECTORY_ENTRY_TLS目录的线程局部变量的数据Windows是自己处理的,而loaddll则是直接加载DLL,重定位之后,直接调用了DllMain,如果你的DLL使用了这些数据(有时候这些数据的使用的编译器隐藏的,用来支持编译器一些相关功能的数据),就有可能导致你的函数无法运行,除非你全局保证不使用(编译器也不使用)异常处理和线程局部变量TLS。
|
能力值:
( LV7,RANK:110 )
|
-
-
11 楼
hehelyc
不知什么原因,为啥我的dll函数都没办法执行,总是报错,能不能帮忙看看
如果,你真的不想出现一些奇奇怪怪的问题的话,你就在LoadDLL加载时自己处理相关DLL模块目录下的数据,否则,建议你还是使用正常的方法吧!
|
能力值:
( LV7,RANK:110 )
|
-
-
12 楼
hehelyc
不知什么原因,为啥我的dll函数都没办法执行,总是报错,能不能帮忙看看
对了,LoadDLL也没处理DLL的资源表,使用了DLL中的资源的DLL,他的资源表也需要你自己处理!
|
能力值:
( LV7,RANK:110 )
|
-
-
13 楼
其实,你的做法我也做过,也遇到过类似的问题,我问了很多人,都不知道时怎么回事,后来我看了一篇关于调试器编写的文章,我才知道,LoadDll做的事情过于简单了,我参考了WINDOWS早年泄露的源代码!才知道Windows的处理根本不像LoadDll做的那么简单!Windows加载DLL时,修改了PEB和TEB,还对数据进行了初始化操作,可是LoadDll中却没有做类似的事!你可以去参考WRK,这是Windows公开的用于教学的代码,看看Windows是如何加载一个DLL模块的!
|
|
|