能力值:
( LV6,RANK:80 )
|
-
-
26 楼
用户模式下的远程线程能不能用这个ClientLoadLibrary来给其他进程注入Dll呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
27 楼
支持Tishion,期待详细
|
能力值:
( LV2,RANK:10 )
|
-
-
28 楼
DLL注入的又一个梗 ,怎么都这么哏!
|
能力值:
( LV2,RANK:10 )
|
-
-
29 楼
在WIN7下的情况
int __stdcall __ClientLoadLibrary(int a1)
{
HMODULE v1; // edi@4
const WCHAR *v2; // eax@5
HMODULE v3; // esi@6
int v4; // edi@6
FARPROC v5; // eax@7
CHAR ProcName; // [sp+18h] [bp-108h]@1
char Dst; // [sp+19h] [bp-107h]@1
unsigned int v9; // [sp+11Ch] [bp-4h]@1
int v10; // [sp+120h] [bp+0h]@1
v9 = (unsigned int)&v10 ^ __security_cookie;
ProcName = 0;
memset(&Dst, 0, 0x103u);
if ( *(_DWORD *)(a1 + 8) && !*(_DWORD *)(a1 + 0x14) )
FixupCallbackPointers(a1);
v1 = LoadLibraryExW(*(LPCWSTR *)(a1 + 0x1C), 0, 8u);
if ( v1 )
{
v2 = *(const WCHAR **)(a1 + 0x24);
if ( v2 )
{
v3 = v1;
v4 = WideCharToMultiByte(0, 0x400u, v2, -1, &ProcName, 260, 0, 0);
if ( !v4 )
goto LABEL_16;
v5 = GetProcAddress(v3, &ProcName);
if ( !v5 || !InitUserApiHook(v3, v5) ) // InitUserApiHook条件不成立 导致Dll被马上卸载了
v4 = 0;
if ( !v4 )
LABEL_16:
FreeLibrary(v3);
}
}
return XyCallbackReturn(0); // 参数1:DLL模块句柄 参数2:DLL导出函数的地址
signed int __stdcall InitUserApiHook(int a1, int a2)
{
signed int v2; // edi@1
_UNKNOWN *v3; // esi@1
unsigned int v5; // [sp+8h] [bp-68h]@1
int v6; // [sp+14h] [bp-5Ch]@7
int v7; // [sp+38h] [bp-38h]@7
int v8; // [sp+48h] [bp-28h]@7
int (__stdcall *v9)(int); // [sp+5Ch] [bp-14h]@5
v2 = 0;
ResetUserApiHook(&v5);
v3 = &gcsUserApiHook;
RtlEnterCriticalSection(&gcsUserApiHook);
if ( !((int (__stdcall *)(_DWORD, unsigned int *))a2)(0, &v5) || v5 <= 0 || v9 != ForceResetUserApiHook )
{
RtlLeaveCriticalSection(&gcsUserApiHook);
return 0;
}
if ( ghmodUserApiHook )
{
if ( ghmodUserApiHook != a1 ) // 这里条件成立了 函数就跳出了 导致DLL被卸载 这里是什么东西不明白?
goto LABEL_9;
++gcLoadUserApiHook;
}
else
{
ghmodUserApiHook = a1;
memcpy(&guah, &v5, 0x64u);
gpfnInitUserApi = a2;
gcLoadUserApiHook = 1;
gfUserApiHook = 1;
CopyMsgMask((int)&unk_77D7978C, (int)&v6, &grgbDwpLiteHookMsg, 128);
CopyMsgMask((int)&unk_77D797B0, (int)&v7, &grgbWndLiteHookMsg, 128);
CopyMsgMask((int)&unk_77D797C0, (int)&v8, &grgbDlgLiteHookMsg, 128);
v3 = &gcsUserApiHook;
}
v2 = 1; // 表示函数成功
LABEL_9:
RtlLeaveCriticalSection(v3);
if ( !v2 )
((void (__stdcall *)(signed int, _DWORD))a2)(1, 0);
return v2;
}
|
能力值:
( LV12,RANK:760 )
|
-
-
30 楼
这个问题DLL里做点处理就好了~
比如DLL里再加载一个DLL~
|
能力值:
( LV2,RANK:10 )
|
-
-
31 楼
mark一下 有空学习
|
能力值:
( LV2,RANK:10 )
|
-
-
32 楼
好啊……
|
能力值:
( LV2,RANK:10 )
|
-
-
33 楼
qq密码,无论是过去还是现在都能直接用键盘钩子直接搞定
|
能力值:
( LV2,RANK:10 )
|
-
-
34 楼
v老大的文章总是点到为止~
|
能力值:
( LV12,RANK:210 )
|
-
-
35 楼
p->ptrApiString = NULL; 不更和谐么?导出函数都不用
ProcessNotifyRoutine里面user32.dll都没有,注一个Crash一个
|
能力值:
( LV2,RANK:10 )
|
-
-
36 楼
占坑 ...这个真的看不懂。。
|
|
|