2013-03-25 193 views
-3

我努力工作,一個dll注入,我tryed的事情100,但他們沒有工作, 我現在在Windows 7 32位(以避免衝突32/64)。 我使用了兩種着名的dll注射器(AutoInject和Extreme注射器V2)和一個手工製作的注射器。 我想在記事本中mesagebox(不能是更加簡單吧?) 我還補充前人的精力,我的窗戶在VMware下運行。 這裏我主要爲我的DLL(含代碼塊建)DLL注入失敗

#if BUILD_DLL 
#define DLLIMPORT __declspec (dllexport) 
#else /* Not BUILDING_DLL */ 
#define DLLIMPORT __declspec (dllimport) 
#endif /* Not BUILDING_DLL */ 

#include <windows.h> 
#include <stdio.h> 
#include <stdlib.h> 

BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) 
{ 
    switch (reason) 
    { 
    case DLL_PROCESS_ATTACH: 
     MessageBox (0, "Hello from injected DLL!\n", "Hi", MB_ICONINFORMATION); 
     break; 
    case DLL_PROCESS_DETACH: 
     break; 
    case DLL_THREAD_ATTACH: 
     break; 
    case DLL_THREAD_DETACH: 
     break; 
    } 
    return TRUE; 
} 

我現在不知道什麼嘗試

+1

首先不做[怪異](HTTP://blogs.msdn的.com/b/oldnewthing /存檔/ 2004/1月27日/ 63401.aspx)[東西](http://blogs.msdn.com/b/oldnewthing/archive/2004/01/28/63880.aspx)在DllMain的。有了這個,你不是很幫助我們......注射器報告任何錯誤嗎?你是否驗證過DLL是否加載了類似ProcessExplorer的東西?旁註:它看起來好像是在編譯ANSI/MBCS,而且我非常肯定記事本是UNICODE。 – 2013-03-25 20:43:57

+0

都說注射成功,我要去嘗試ProcessExplorer – gfauchart 2013-03-25 20:48:49

+0

Nik在這兩方面都是正確的。您需要更改MessageBox調用以獲取類似於OutputDebugString的內容,並且需要將該DLL編譯爲Unicode。 ANSI在十年前已經過時了。 – 2013-03-25 21:06:13

回答

1

我找到了解決我的問題, 如果任何人有同樣的問題: 只需使用Visual Sudio代替代碼塊

0

根據Howto call MessageBox in dllmain你不能調用的MessageBox裏面的DllMain(它在你受到嚴格限制可以做)。 tenfour建議使用類似OutputDebugString的東西。

+0

我試了一下在這個鏈接上找到的主要內容:http://www.mpgh.net/forum/290-crossfire-spammers-injectors-multi-tools/332194-how-make-dll-injection-c.html 如果Messagebox是我要嘗試其他輸出方式的問題 – gfauchart 2013-03-25 20:47:46