Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 28.01.2011, 22:18   #141
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

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;

я уже не знаю, ошибка и всё(
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Старый 28.01.2011, 22:26   #142
Рыцарь
 
Аватар для destructor
 
Регистрация: 26.06.2009
Сообщений: 2,433
Сказал Спасибо: 154
Имеет 692 спасибок в 426 сообщенях
destructor на пути к лучшему
По умолчанию

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. Причина: Добавлено сообщение
destructor вне форума   Ответить с цитированием
Старый 28.01.2011, 22:33   #143
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

supernewbie, может все таки на С++ будешь писать dll? Я сам очень давно пишу на делфи но когда начал делать перехват понял что на с++ получается намного удобнее.
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
Yegor вне форума   Ответить с цитированием
Старый 28.01.2011, 22:37   #144
Рыцарь
 
Аватар для destructor
 
Регистрация: 26.06.2009
Сообщений: 2,433
Сказал Спасибо: 154
Имеет 692 спасибок в 426 сообщенях
destructor на пути к лучшему
По умолчанию

одинаково
__________________
Шожиделать.. ботить хочется..
destructor вне форума   Ответить с цитированием
Старый 28.01.2011, 22:43   #145
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

коменты превратились в ежиков)) потом опишу, когда полностью сделаю вывод в консоль

Добавлено через 1 минуту
е*ать!!! по-моему он только и делает что вызывает GetProcAddress!!!
да консоль просто обфлудилась!!!

PS хук абсалютно нормально ставился, дело как раз в месадж боксе
PSS чесна признаюсь что слизал хук прок, но коменты к ней читал и представляю как сплайсинг работает
__________________
Начало.

Последний раз редактировалось supernewbie, 28.01.2011 в 22:45. Причина: Добавлено сообщение
supernewbie вне форума   Ответить с цитированием
Старый 30.01.2011, 01:40   #146
Рыцарь
 
Аватар для destructor
 
Регистрация: 26.06.2009
Сообщений: 2,433
Сказал Спасибо: 154
Имеет 692 спасибок в 426 сообщенях
destructor на пути к лучшему
По умолчанию

обработка пакета геймгуарда:
Код:
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. Причина: Добавлено сообщение
destructor вне форума   Ответить с цитированием
Старый 30.01.2011, 01:45   #147
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

менять?)
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Старый 30.01.2011, 01:47   #148
Рыцарь
 
Аватар для destructor
 
Регистрация: 26.06.2009
Сообщений: 2,433
Сказал Спасибо: 154
Имеет 692 спасибок в 426 сообщенях
destructor на пути к лучшему
По умолчанию

ты видиш что в ответ идут константы?
а на самом деле что в ответах?
__________________
Шожиделать.. ботить хочется..
destructor вне форума   Ответить с цитированием
Старый 30.01.2011, 01:49   #149
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

ну у тебя в ответ идут константы, а на самом деле у тебя в ответ идут константы, или что ты хотел услышать)
значения констант в ответе, отправка пакета в ответе или что)

задай вопрос как-то по-другому чтоли
__________________
Начало.

Последний раз редактировалось supernewbie, 30.01.2011 в 01:52.
supernewbie вне форума   Ответить с цитированием
Старый 30.01.2011, 01:53   #150
Рыцарь
 
Аватар для destructor
 
Регистрация: 26.06.2009
Сообщений: 2,433
Сказал Спасибо: 154
Имеет 692 спасибок в 426 сообщенях
destructor на пути к лучшему
По умолчанию

1)
гг запрос\ответ как выглядит:

пришла непонятная хрень, на нее выдало непонятный ответ.
сервер проверяет ответ на правельность и докладывает если что нитак.


запрос\ответ достаточно сложные чтобы ты пакетхаком их не подделал.

это понятно? такое встречал?
__________________
Шожиделать.. ботить хочется..
destructor вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 08:29.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!