请教:一个文件能不能既是EXE又是DLL?如何实现?
多谢!

解决方案 »

  1.   

    可以把一個Exe文件當Dll用。一般我們會用LoadLibrary()去加載一個Dll,
    但也可以用這個函數來打開一個Exe,
    以獲取此文件中的資源。
      

  2.   

    我要调用Exe的函数可以吗?
    能给个例子吗?
      

  3.   

    什么意思呀?文件有很多种了.exe,.bat,.com,.dll,.dat,.bmp,.jpg,.txt,.doc....
      

  4.   

    http://www.vchelp.net/vchelp/zsrc/rmtr.asp?type_id=28&class_id=1&cata_id=2&article_id=466&search_term=
    有段这样的话:
    d) LoadLibraryEx提供一个参数用于控制dll的加载方式--dwFlags。dwFlags可取DONT_RESOLVE_DLL_REFERENCES和LOAD_LIBRARY_AS_DATAFILE或其他值。LOAD_LIBRARY_AS_DATAFILE让LoadLibraryEx把dll当成一个数据文件加载,不做任何调整;DONT_RESOLVE_DLL_REFERENCES让LoadLibraryEx把dll当成一个image文件加载,但是不解决IAT和重定位表,当然也不会调用DllMain。但是,有没有一种方法,让LoadLibraryEx解决IAT和重定位表,但是又不调用DllMain呢?出于个人兴趣,我研究了LoadLibraryEx,发现他做一些调整后,最终调用了ntdll.dll中的LdrLoadDll,LdrLoadDll又调用了LdrLoadDllEx(这个API没有被nt/2k导出,名字也是我自己起的)。LdrLoadDllEx比LdrLoadDll多一个参数,前几个完全相同,最后一个指明是否调用DllMain。这样我们又有了第4中加载exe的方法:修改exe的Characteristics,伪装成dll,直接调用LdrLoadDllEx,最后一个参数为0。 
    DWORD WINAPI LdrLoadDllEx(LPCWSTR szSearchPath, DWORD *dwFlags, UNICODE_STRING *uszImagePath, HMODULE *pModule, BOOL fCallDllMain)
      

  5.   

    对不起。
    是我没说清楚。
    我的本意是想做单文件的hook.
      

  6.   

    恩 有创意! 要告诉你的是某些Hook一定要是全局hook比如键盘钩子 因为它需要截获所有的键盘消息 就必须为dll形式.
    呵呵 不过你可以这样做,就做一个dll 然后用rundll32.exe 执行这个dll。
      

  7.   

    关心!
    我也有这样的需求,即A_EXE可以将B_EXE看做是一个DLL,使用其内部的过程,同时也是独立的可执行程序。