[COLOR=#0000BB][FONT=monospace]DWORD dwAhnHS_MakeResponse_JMPBack [/FONT][/COLOR][COLOR=#007700][FONT=monospace]= [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0[/FONT][/COLOR][COLOR=#007700][FONT=monospace];
[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]DWORD dwAhnHS_EndOfMakeResponse_HookStart [/FONT][/COLOR][COLOR=#007700][FONT=monospace]= [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0[/FONT][/COLOR][COLOR=#007700][FONT=monospace];
[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]DWORD HS_Place [/FONT][/COLOR][COLOR=#007700][FONT=monospace]= [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0[/FONT][/COLOR][COLOR=#007700][FONT=monospace];
[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]__declspec[/FONT][/COLOR][COLOR=#007700][FONT=monospace]([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]naked[/FONT][/COLOR][COLOR=#007700][FONT=monospace]) [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]void __cdecl hkAhnHS_MakeResponse [/FONT][/COLOR][COLOR=#007700][FONT=monospace]( [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]DWORD a1[/FONT][/COLOR][COLOR=#007700][FONT=monospace], [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]char[/FONT][/COLOR][COLOR=#007700][FONT=monospace]* [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]a2[/FONT][/COLOR][COLOR=#007700][FONT=monospace], [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]char[/FONT][/COLOR][COLOR=#007700][FONT=monospace]* [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]a3 [/FONT][/COLOR][COLOR=#007700][FONT=monospace])
{
[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]__asm
[/FONT][/COLOR][COLOR=#007700][FONT=monospace]{
[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]push ebp
mov ebp[/FONT][/COLOR][COLOR=#007700][FONT=monospace],[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]esp
push 0xFF
pushad
pushfd
[/FONT][/COLOR][COLOR=#007700][FONT=monospace]}
if ( [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]a1 [/FONT][/COLOR][COLOR=#007700][FONT=monospace]== [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0xD [/FONT][/COLOR][COLOR=#007700][FONT=monospace])
{
*([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]BYTE[/FONT][/COLOR][COLOR=#007700][FONT=monospace]*)([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]HS_Place[/FONT][/COLOR][COLOR=#007700][FONT=monospace]) = [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0x33[/FONT][/COLOR][COLOR=#007700][FONT=monospace];
*([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]BYTE[/FONT][/COLOR][COLOR=#007700][FONT=monospace]*)([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]HS_Place[/FONT][/COLOR][COLOR=#007700][FONT=monospace]+[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0x1[/FONT][/COLOR][COLOR=#007700][FONT=monospace]) = [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0xD0[/FONT][/COLOR][COLOR=#007700][FONT=monospace];
}
[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]__asm
[/FONT][/COLOR][COLOR=#007700][FONT=monospace]{
[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]popfd
popad
jmp dwAhnHS_MakeResponse_JMPBack
[/FONT][/COLOR][COLOR=#007700][FONT=monospace]}
}
[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]__declspec[/FONT][/COLOR][COLOR=#007700][FONT=monospace]([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]naked[/FONT][/COLOR][COLOR=#007700][FONT=monospace]) [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]void __cdecl hkAhnHS_EndOfMakeResponse[/FONT][/COLOR][COLOR=#007700][FONT=monospace]()
{
[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]__asm
[/FONT][/COLOR][COLOR=#007700][FONT=monospace]{
[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]pushad
pushfd
[/FONT][/COLOR][COLOR=#007700][FONT=monospace]}
*([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]BYTE[/FONT][/COLOR][COLOR=#007700][FONT=monospace]*)([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]HS_Place[/FONT][/COLOR][COLOR=#007700][FONT=monospace]) = [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0x85[/FONT][/COLOR][COLOR=#007700][FONT=monospace];
*([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]BYTE[/FONT][/COLOR][COLOR=#007700][FONT=monospace]*)([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]HS_Place[/FONT][/COLOR][COLOR=#007700][FONT=monospace]+[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0x1[/FONT][/COLOR][COLOR=#007700][FONT=monospace]) = [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0xD2[/FONT][/COLOR][COLOR=#007700][FONT=monospace];
[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]__asm
[/FONT][/COLOR][COLOR=#007700][FONT=monospace]{
[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]popfd
popad
retn 0x0C
[/FONT][/COLOR][COLOR=#007700][FONT=monospace]}
}
[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]int DetouringHackShield [/FONT][/COLOR][COLOR=#007700][FONT=monospace]([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]void[/FONT][/COLOR][COLOR=#007700][FONT=monospace])
{
[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]int hEhSvc[/FONT][/COLOR][COLOR=#007700][FONT=monospace], [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]OK [/FONT][/COLOR][COLOR=#007700][FONT=monospace]= [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]1337[/FONT][/COLOR][COLOR=#007700][FONT=monospace];
do
{
[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]hEhSvc [/FONT][/COLOR][COLOR=#007700][FONT=monospace]= (int)[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Tools[/FONT][/COLOR][COLOR=#007700][FONT=monospace].[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]oWnGetModuleHandle[/FONT][/COLOR][COLOR=#007700][FONT=monospace]([/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]"EhSvc.dll"[/FONT][/COLOR][COLOR=#007700][FONT=monospace]);
[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Sleep[/FONT][/COLOR][COLOR=#007700][FONT=monospace]([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]1000[/FONT][/COLOR][COLOR=#007700][FONT=monospace]);
} while(![/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]hEhSvc[/FONT][/COLOR][COLOR=#007700][FONT=monospace]);
if( [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]hEhSvc [/FONT][/COLOR][COLOR=#007700][FONT=monospace]> [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0 [/FONT][/COLOR][COLOR=#007700][FONT=monospace])
{
[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]unsigned long MProtection[/FONT][/COLOR][COLOR=#007700][FONT=monospace];
if ( [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]ProtectVirtualProtect[/FONT][/COLOR][COLOR=#007700][FONT=monospace](([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]void[/FONT][/COLOR][COLOR=#007700][FONT=monospace]*)[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]hEhSvc[/FONT][/COLOR][COLOR=#007700][FONT=monospace],[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0x00125000[/FONT][/COLOR][COLOR=#007700][FONT=monospace],[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0x04[/FONT][/COLOR][COLOR=#007700][FONT=monospace],&[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]MProtection[/FONT][/COLOR][COLOR=#007700][FONT=monospace]) ) [/FONT][/COLOR][COLOR=#FF8000][FONT=monospace]// Our own virtual protect api to prevent stealer
[/FONT][/COLOR][COLOR=#007700][FONT=monospace]{
[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]HS_Place [/FONT][/COLOR][COLOR=#007700][FONT=monospace]= ([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]hEhSvc[/FONT][/COLOR][COLOR=#007700][FONT=monospace]+[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0x[/FONT][/COLOR][COLOR=#007700][FONT=monospace]******);
[/FONT][/COLOR][COLOR=#FF8000][FONT=monospace]// CRC
[/FONT][/COLOR][COLOR=#007700][FONT=monospace]*([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]BYTE[/FONT][/COLOR][COLOR=#007700][FONT=monospace]*)([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]hEhSvc[/FONT][/COLOR][COLOR=#007700][FONT=monospace]+[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0x[/FONT][/COLOR][COLOR=#007700][FONT=monospace]******) = [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0x31[/FONT][/COLOR][COLOR=#007700][FONT=monospace];
[/FONT][/COLOR][COLOR=#FF8000][FONT=monospace]// Detection
[/FONT][/COLOR][COLOR=#007700][FONT=monospace]*([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]BYTE[/FONT][/COLOR][COLOR=#007700][FONT=monospace]*)([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]hEhSvc[/FONT][/COLOR][COLOR=#007700][FONT=monospace]+[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0x[/FONT][/COLOR][COLOR=#007700][FONT=monospace]******) = [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0xC3[/FONT][/COLOR][COLOR=#007700][FONT=monospace];
[/FONT][/COLOR][COLOR=#FF8000][FONT=monospace]// Detection
[/FONT][/COLOR][COLOR=#007700][FONT=monospace]*([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]BYTE[/FONT][/COLOR][COLOR=#007700][FONT=monospace]*)([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]hEhSvc[/FONT][/COLOR][COLOR=#007700][FONT=monospace]+[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0x[/FONT][/COLOR][COLOR=#007700][FONT=monospace]******) = [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0xC3[/FONT][/COLOR][COLOR=#007700][FONT=monospace];
[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]dwAhnHS_MakeResponse_JMPBack [/FONT][/COLOR][COLOR=#007700][FONT=monospace]= ([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]hEhSvc[/FONT][/COLOR][COLOR=#007700][FONT=monospace]+[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0x[/FONT][/COLOR][COLOR=#007700][FONT=monospace]******[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0[/FONT][/COLOR][COLOR=#007700][FONT=monospace]+[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0x5[/FONT][/COLOR][COLOR=#007700][FONT=monospace]);
[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Detour[/FONT][/COLOR][COLOR=#007700][FONT=monospace]->[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Create[/FONT][/COLOR][COLOR=#007700][FONT=monospace](([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]PBYTE[/FONT][/COLOR][COLOR=#007700][FONT=monospace])([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]hEhSvc[/FONT][/COLOR][COLOR=#007700][FONT=monospace]+[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0x[/FONT][/COLOR][COLOR=#007700][FONT=monospace]******),([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]LPBYTE[/FONT][/COLOR][COLOR=#007700][FONT=monospace])[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]hkAhnHS_MakeResponse[/FONT][/COLOR][COLOR=#007700][FONT=monospace],[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]DETOUR_TYPE_JMP[/FONT][/COLOR][COLOR=#007700][FONT=monospace],[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]DETOUR_LEN_AUTO[/FONT][/COLOR][COLOR=#007700][FONT=monospace]);
[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Detour[/FONT][/COLOR][COLOR=#007700][FONT=monospace]->[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Create[/FONT][/COLOR][COLOR=#007700][FONT=monospace](([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]PBYTE[/FONT][/COLOR][COLOR=#007700][FONT=monospace])([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]hEhSvc[/FONT][/COLOR][COLOR=#007700][FONT=monospace]+[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0x[/FONT][/COLOR][COLOR=#007700][FONT=monospace]******),([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]LPBYTE[/FONT][/COLOR][COLOR=#007700][FONT=monospace])[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]hkAhnHS_EndOfMakeResponse[/FONT][/COLOR][COLOR=#007700][FONT=monospace],[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]DETOUR_TYPE_JMP[/FONT][/COLOR][COLOR=#007700][FONT=monospace],[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]DETOUR_LEN_AUTO[/FONT][/COLOR][COLOR=#007700][FONT=monospace]);
[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]ProtectVirtualProtect[/FONT][/COLOR][COLOR=#007700][FONT=monospace](([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]void[/FONT][/COLOR][COLOR=#007700][FONT=monospace]*)[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]hEhSvc[/FONT][/COLOR][COLOR=#007700][FONT=monospace],[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0x00125000[/FONT][/COLOR][COLOR=#007700][FONT=monospace],[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]MProtection[/FONT][/COLOR][COLOR=#007700][FONT=monospace],[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0[/FONT][/COLOR][COLOR=#007700][FONT=monospace]); [/FONT][/COLOR][COLOR=#FF8000][FONT=monospace]// Our own virtual protect api to prevent stealer
[/FONT][/COLOR][COLOR=#007700][FONT=monospace]}
}
return [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]OK[/FONT][/COLOR][COLOR=#007700][FONT=monospace];
}
[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]We used to initiliaze it like this
DWORD IntiliazieBP [/FONT][/COLOR][COLOR=#007700][FONT=monospace]= [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]DetouringHackShield[/FONT][/COLOR][COLOR=#007700][FONT=monospace]();
if ( [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]IntiliazieBP [/FONT][/COLOR][COLOR=#007700][FONT=monospace]== [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]1337 [/FONT][/COLOR][COLOR=#007700][FONT=monospace])
{
[/FONT][/COLOR][COLOR=#FF8000][FONT=monospace]// starting hook code etc etc[/FONT][/COLOR]