Fórum Hook de GetComputerNameA #364495
30/09/2008
0
Galera, é o seguinte: tava querendo fazer um programinha pra hookar a função GetComputerNameA. Até aí tudo bem, consegui hookar a função sem problema. O que eu queria era saber como mandar um resultado da função definido pelo meu programa. Tipo, o nome do meu pc é WINDOWS, mas eu queria que, quando a função GetComputerNameA fosse executada, ele não retornasse WINDOWS, retornasse CASA, por exemplo. É possível isso?
Aí vai meu código:
program MsgBox;
uses
Windows,
afxCodeHook,
SysUtils;
var
lpBuffer2 : PChar;
nSize2 : DWord;
GetComputerNameANextHook: function(lpBuffer: PAnsiChar; nSize: DWORD): Bool; stdcall;
const Buff_Size = MAX_COMPUTERNAME_LENGTH + 1;
function GetComputerNameAHookProc(lpBuffer: PAnsiChar; nSize: DWORD): Bool; stdcall;
begin
MessageBox(0, lpBuffer, ´Interceptação detectada A´, 0);
Result := GetComputerNameANextHook(lpBuffer, nSize);
end;
begin
//test the target API
MessageBox(0, ´´, ´hi´, 0);
//hook the API
HookCode(GetProcAddress(GetModuleHandle(´kernel32.dll´),´GetComputerNameA´), @GetComputerNameAHookProc, @GetComputerNameANextHook);
//testar
nSize2 := Buff_Size;
lpBuffer2 := StrAlloc(Buff_Size);
GetComputerName(lpBuffer2,nSize2);
MessageBox(0, PChar(lpBuffer2), PChar(lpBuffer2), 0);
//Unhoook the API
UnhookCode(@GetComputerNameANextHook);
end.
Se alguém puder ajudar, eu agradeço. :D
Aí vai meu código:
program MsgBox;
uses
Windows,
afxCodeHook,
SysUtils;
var
lpBuffer2 : PChar;
nSize2 : DWord;
GetComputerNameANextHook: function(lpBuffer: PAnsiChar; nSize: DWORD): Bool; stdcall;
const Buff_Size = MAX_COMPUTERNAME_LENGTH + 1;
function GetComputerNameAHookProc(lpBuffer: PAnsiChar; nSize: DWORD): Bool; stdcall;
begin
MessageBox(0, lpBuffer, ´Interceptação detectada A´, 0);
Result := GetComputerNameANextHook(lpBuffer, nSize);
end;
begin
//test the target API
MessageBox(0, ´´, ´hi´, 0);
//hook the API
HookCode(GetProcAddress(GetModuleHandle(´kernel32.dll´),´GetComputerNameA´), @GetComputerNameAHookProc, @GetComputerNameANextHook);
//testar
nSize2 := Buff_Size;
lpBuffer2 := StrAlloc(Buff_Size);
GetComputerName(lpBuffer2,nSize2);
MessageBox(0, PChar(lpBuffer2), PChar(lpBuffer2), 0);
//Unhoook the API
UnhookCode(@GetComputerNameANextHook);
end.
Se alguém puder ajudar, eu agradeço. :D
Dominus
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)