【问题标题】:Tunneling all connections of an application through a proxy with Hooking wsocks32.dll使用 Hooking wsocks32.dll 通过代理为应用程序的所有连接建立隧道
【发布时间】:2015-03-01 11:54:54
【问题描述】:

我从网上找到了这个项目,我想开发它。

项目有两个部分。
1。一个注射器应用程序。
2。用于注入应用程序(chrome.exe 或任何应用程序)的 dll。 作为通过代理隧道连接应用程序的所有连接。


1.dll注入程序。工作正常!
2。注入器应用程序运行“chrome.exe”并将我的 DLL 注入到 chrome。工作正常!
3。我的 dll 必须将“wsocks32.dll”函数替换为我在 chrome.exe 中的 dll 函数。失败!
4。从 Chrome.exe 打开的网站,必须通过代理运行...失败!

问题:
此功能“ReplaceIAEntryInOneMod”正在替换应用程序的功能。
但是 wsock32.dll 函数不能被替换。 我无法连接到 wsock32.dll!

 ReplaceIATEntryInOneMod("wsock32.dll",(PROC)OriginalConnect,(PROC)MyConnect,hModCaller);**

但是,Kernel.dll 的函数替换过程是成功的,工作正常。

ReplaceIATEntryInOneMod( "KERNEL32.dll",(PROC)OriginalLoadLibraryW,(PROC)MyLoadLibraryW,hModCaller );

任何人帮助我的原因是什么? 我的操作系统是Win7。

我的功能:

int ReplaceIATEntryInOneMod( PCSTR pszCalleeModName,PROC pfnCurrent, PROC pfnNew, HMODULE hModCaller )
{
ULONG ulSize;
PIMAGE_IMPORT_DESCRIPTOR pImportDesc;
pImportDesc = (PIMAGE_IMPORT_DESCRIPTOR)
ImageDirectoryEntryToData( hModCaller, TRUE,
IMAGE_DIRECTORY_ENTRY_IMPORT, &ulSize );
if (pImportDesc == NULL)
    return 2;  
for(; pImportDesc->Name; pImportDesc++)
{
    PSTR pszModName;
    pszModName = (PSTR)((PBYTE)hModCaller + pImportDesc->Name );
    if ( lstrcmpiA( pszModName, pszCalleeModName ) == 0 ) break;
}

if ( pImportDesc->Name == 0 ) 
    return 1;  

PIMAGE_THUNK_DATA pThunk;
pThunk = (PIMAGE_THUNK_DATA)((PBYTE)hModCaller + pImportDesc->FirstThunk );

for (; pThunk->u1.Function; pThunk++)
{
    PROC* ppfn = (PROC*)&pThunk->u1.Function;
    if (*ppfn == pfnCurrent)
    {
        DWORD dwDummy;
        VirtualProtect( ppfn, sizeof(PROC), PAGE_EXECUTE_READWRITE, &dwDummy );

        WriteProcessMemory( hCurrentProcess, ppfn, &pfnNew, sizeof(PROC),NULL);
        return 0;
        }
    }
    return -1; 
}

【问题讨论】:

  • 请在您的问题中添加一些调试结果。代码在哪里没有达到您的预期?

标签: c++ api hook


【解决方案1】:

解决方案:

ReplaceIATEntryInOneMod("wsock32.dll",(PROC)OriginalConnect,(PROC)MyConnect,hModCaller);

ReplaceIATEntryInOneMod("WS2_32.dll",(PROC)OriginalConnect,(PROC)MyConnect,hModCaller);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 2011-03-31
    • 2017-10-08
    • 2022-12-15
    • 2011-11-15
    相关资源
    最近更新 更多