我从互联网上找到了这个项目,我想开发它。
项目有两个部分。
1。注射器应用程序。
2。用于注入应用程序的dll(chrome.exe或任何应用程序)
as通过代理隧道连接应用程序的所有连接。
1. Dll喷油器程序。工作良好!
2。 Injector app运行“chrome.exe”并将我的DLL注入chrome。工作良好!
3。我的dll必须将“wsocks32.dll”函数替换为chrome.exe..Fail中的dll函数!
4。从Chrome.exe打开的网站必须通过代理工作......失败!
问题:
这个功能“ReplaceIATEntryInOneMod”正在取代应用程序的功能。
但是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;
}
答案 0 :(得分:0)
解决方案:
ReplaceIATEntryInOneMod("wsock32.dll",(PROC)OriginalConnect,(PROC)MyConnect,hModCaller);
到
ReplaceIATEntryInOneMod("WS2_32.dll",(PROC)OriginalConnect,(PROC)MyConnect,hModCaller);