Программинг Форум для тем связанных с программированием
28.01.2011, 22:18
#141
Местный
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
delphi Код:
var
GetProcAddressNext: function ( Module: THandle; ProcName: PChar ) : TFarProc; stdcall;
function MyGetProcAddressHook( Module: THandle; ProcName: PChar ) : TFarProc; stdcall;
begin
messagebox( 0 ,'MyGetProcAddressHook' ,'MyGetProcAddressHook' ,0 ) ;
result:=GetProcAddressNext( Module,ProcName) ;
end ;
function SaveOldFunction( Proc: pointer ; Old: pointer ) : dword;
var
SaveSize, Size: dword;
Next: pointer ;
begin
SaveSize := 0 ;
Next := Proc;
while SaveSize < 5 do
begin
Size := SizeOfCode( Next) ;
Next := pointer ( dword( Next) + Size) ;
Inc ( SaveSize, Size) ;
end ;
CopyMemory( Old, Proc, SaveSize) ;
byte ( pointer ( dword( Old) + SaveSize) ^) := $e9;
dword( pointer ( dword( Old) + SaveSize + 1 ) ^) := dword( Next) - dword( Old) - SaveSize - 5 ;
Result := SaveSize;
end ;
function MyHookCode( TargetProc, NewProc: pointer ; var OldProc: pointer ) : boolean ;
var
Address: dword;
OldProtect: dword;
OldFunction: pointer ;
Proc: pointer ;
begin
Result := False ;
try
Proc := TargetProc;
Address := dword( NewProc) - dword( Proc) - 5 ;
VirtualProtect( Proc, 5 , PAGE_EXECUTE_READWRITE, OldProtect) ;
GetMem ( OldFunction, 255 ) ;
dword( OldFunction^) := dword( Proc) ;
byte ( pointer ( dword( OldFunction) + 4 ) ^) := SaveOldFunction( Proc, pointer ( dword( OldFunction) + 5 ) ) ;
byte ( Proc^) := $e9;
dword( pointer ( dword( Proc) + 1 ) ^) := Address;
VirtualProtect( Proc, 5 , OldProtect, OldProtect) ;
OldProc := pointer ( dword( OldFunction) + 5 ) ;
except
Exit ;
end ;
Result := True ;
end ;
function CloneTable : boolean ;
var
hKernel32:Cardinal ;
pGetProcAddress:Pointer ;
begin
result:=false ;
hKernel32:=GetModuleHandle( 'kernel32.dll' ) ;
if hKernel32=0 then exit ;
pGetProcAddress:=GetProcAddress( hKernel32,'GetProcAddress' ) ;
if pGetProcAddress=nil then exit ;
result:=MyHookCode( pGetProcAddress,@MyGetProcAddressHook,@GetProcAddressNext) ;
end ;
я уже не знаю, ошибка и всё(
__________________
Н а ч а л о .
28.01.2011, 22:26
#142
Рыцарь
Регистрация: 26.06.2009
Сообщений: 2,433
Сказал Спасибо: 154
Имеет 692 спасибок в 426 сообщенях
messagebox(0,'MyGetProcAddressHook','MyGetProcAddr essHook',0); тут делай вывод в консоль, приложение не сможет ждать пока ты "ок" на каждом окошке тыркать будиш
Добавлено через 29 секунд
VirtualProtect(Proc, 5, PAGE_EXECUTE_READWRITE, OldProtect); что возвращает функция?
Добавлено через 42 секунды
Цитата:
Сообщение от
supernewbie
* * Proc := TargetProc;
* * Address := dword(NewProc) - dword(Proc) - 5;
* * VirtualProtect(Proc, 5, PAGE_EXECUTE_READWRITE, OldProtect);
* * GetMem(OldFunction, 255);
* * dword(OldFunction^) := dword(Proc);
* * byte(pointer(dword(OldFunction) + 4)^) := SaveOldFunction(Proc, pointer(dword(OldFunction) + 5));
* * byte(Proc^) := $e9;
* * dword(pointer(dword(Proc) + 1)^) := Address;
* * VirtualProtect(Proc, 5, OldProtect, OldProtect);
* * OldProc := pointer(dword(OldFunction) + 5);
почему тут так сложно все? где каментарии?
Добавлено через 1 минуту
крит ошибка вылетает тут?
Цитата:
Сообщение от
supernewbie
* dword(OldFunction^) := dword(Proc);
или тут?
Цитата:
Сообщение от
supernewbie
byte(pointer(dword(OldFunction) + 4)^) := SaveOldFunction(Proc, pointer(dword(OldFunction) + 5));
или тут?
Цитата:
Сообщение от
supernewbie
byte(Proc^) := $e9;
или тут?
Цитата:
Сообщение от
supernewbie
dword(pointer(dword(Proc) + 1)^) := Address;
Добавлено через 2 минуты
Цитата:
Сообщение от
supernewbie
if hKernel32=0 then exit;
then
begin
writeln('не могу найти kernel32.dll');
exit;
end;
__________________
Шожиделать.. ботить хочется..
Последний раз редактировалось destructor, 28.01.2011 в 22:28 .
Причина: Добавлено сообщение
28.01.2011, 22:33
#143
Местный
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
supernewbie , может все таки на С++ будешь писать dll? Я сам очень давно пишу на делфи но когда начал делать перехват понял что на с++ получается намного удобнее.
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
28.01.2011, 22:37
#144
Рыцарь
Регистрация: 26.06.2009
Сообщений: 2,433
Сказал Спасибо: 154
Имеет 692 спасибок в 426 сообщенях
одинаково
__________________
Шожиделать.. ботить хочется..
28.01.2011, 22:43
#145
Местный
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
коменты превратились в ежиков)) потом опишу, когда полностью сделаю вывод в консоль
Добавлено через 1 минуту
е*ать!!! по-моему он только и делает что вызывает GetProcAddress!!!
да консоль просто обфлудилась!!!
PS хук абсалютно нормально ставился, дело как раз в месадж боксе
PSS чесна признаюсь что слизал хук прок, но коменты к ней читал и представляю как сплайсинг работает
__________________
Н а ч а л о .
Последний раз редактировалось supernewbie, 28.01.2011 в 22:45 .
Причина: Добавлено сообщение
30.01.2011, 01:40
#146
Рыцарь
Регистрация: 26.06.2009
Сообщений: 2,433
Сказал Спасибо: 154
Имеет 692 спасибок в 426 сообщенях
обработка пакета геймгуарда:
Код:
int p1;
int p2;
int p3;
int p4;
onggpacket(int a1, int a2, int a3, int a4) // пришел запрос
{
p1=0x0123;
p2=0x4567;
p3=0x89ab;
p3=0xcdef;
sendggpacket(p1,p2,p3,p4); // отправили ответ
};
на самом деле немнога подругому , но идея такая=)
Добавлено через 2 минуты
вот представь,
нашел ты эту функцию,
перевел из асемблера в более высокий язык,
получилось примерно то что я тебе написал.
что будеш дальше делать?)
__________________
Шожиделать.. ботить хочется..
Последний раз редактировалось destructor, 30.01.2011 в 01:41 .
Причина: Добавлено сообщение
30.01.2011, 01:45
#147
Местный
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
менять?)
__________________
Н а ч а л о .
30.01.2011, 01:47
#148
Рыцарь
Регистрация: 26.06.2009
Сообщений: 2,433
Сказал Спасибо: 154
Имеет 692 спасибок в 426 сообщенях
ты видиш что в ответ идут константы?
а на самом деле что в ответах?
__________________
Шожиделать.. ботить хочется..
30.01.2011, 01:49
#149
Местный
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
ну у тебя в ответ идут константы, а на самом деле у тебя в ответ идут константы, или что ты хотел услышать)
значения констант в ответе, отправка пакета в ответе или что)
задай вопрос как-то по-другому чтоли
__________________
Н а ч а л о .
Последний раз редактировалось supernewbie, 30.01.2011 в 01:52 .
30.01.2011, 01:53
#150
Рыцарь
Регистрация: 26.06.2009
Сообщений: 2,433
Сказал Спасибо: 154
Имеет 692 спасибок в 426 сообщенях
1)
гг запрос\ответ как выглядит:
пришла непонятная хрень, на нее выдало непонятный ответ.
сервер проверяет ответ на правельность и докладывает если что нитак.
запрос\ответ достаточно сложные чтобы ты пакетхаком их не подделал.
это понятно? такое встречал?
__________________
Шожиделать.. ботить хочется..
Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
Часовой пояс GMT +4, время: 00:58 .
vBulletin style designed by
MSC Team .
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод:
zCarot
Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!