Программинг Форум для тем связанных с программированием
02.10.2010, 16:29
#21
Рыцарь
Регистрация: 13.10.2009
Сообщений: 665
Сказал Спасибо: 38
Имеет 172 спасибок в 108 сообщенях
Цитата:
Сообщение от
ALF
Спасибо. Откомпилировалось нормально. Появилсь ДЛЛ-ка. Но что с ней делать то? О_о
инжектит в игру) причем до инициализации ДХ интерфеса, тоесть сразу при запуске
02.10.2010, 23:56
#22
Пользователь
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
Цитата:
Сообщение от
Morfik
инжектит в игру) причем до инициализации ДХ интерфеса, тоесть сразу при запуске
Приведи плиз пример кода инжекта)
PHP код:
unit Unit1 ;
interface
uses
Windows , Messages , SysUtils , Variants , Classes , Graphics , Controls , Forms ,
Dialogs , StdCtrls , ExtCtrls ;
type
TForm1 = class( TForm )
Button1 : TButton ;
Timer1 : TTimer ;
procedure Button1Click ( Sender : TObject );
private
{ Private declarations }
public
{ Public declarations }
end ;
var
Form1 : TForm1 ;
implementation
{ $R *. dfm }
uses Direct3D9 , madCodeHook ;
procedure TForm1 . Button1Click ( Sender : TObject );
var
start : TStartupInfo ;
procInfo : TProcessInformation ;
begin
ZeroMemory (@ start , SizeOf ( start ));
start . cb := SizeOf ( Start );
if CreateProcessA ( 'C:\Games\LineAge\system\l2.exe' ,
'' , nil , nil , True , CREATE_SUSPENDED , nil ,
'C:\Games\LineAge\system' , start , procInfo ) then
begin
if not InjectLibraryA ( procInfo . hProcess , 'my_lib.dll' ) then
ShowMessage ( 'failed' );
ResumeThread ( procInfo . hThread );
end ;
end ;
end .
а то этим не получается ><
Добавлено через 5 часов 1 минуту
Терь проблема другая)
Инжект вроде получился (с помощью кода, указанного выше)
НО на экране ниче не увидел)
__________________
Все относительно...
Последний раз редактировалось ALF, 02.10.2010 в 23:56 .
Причина: Добавлено сообщение
03.10.2010, 00:53
#23
Местный
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
Цитата:
Сообщение от
ALF
Спасибо. Откомпилировалось нормально. Появилсь ДЛЛ-ка. Но что с ней делать то? О_о
если я все прально понимаю ее нужно просто подгрузить приложением =)
кстате директ-х хеадеры этиже пользую, но хукаю чуток не так
За это сообщение mira нажился спасибкой от:
03.10.2010, 11:37
#24
Пользователь
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
Мож исход скинуть как ты подгружаешь )
__________________
Все относительно...
03.10.2010, 18:59
#25
Местный
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
Цитата:
Сообщение от
ALF
Мож исход скинуть как ты подгружаешь )
а никак я вообще в d3ddrv.dll поменял в таблице импортa
d3d9.dll на свою iohp.dll пока нет никакова чекера файлов на серве не буду морочитса с инжектом
За это сообщение mira нажился спасибкой от:
03.10.2010, 20:05
#26
Пользователь
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
О_о что за "iohp.dll"?
__________________
Все относительно...
04.10.2010, 01:12
#27
Местный
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
Цитата:
Сообщение от
ALF
О_о что за "iohp.dll"?
враппер для d3d9.dll (гуглю в помощ) а по совместительству ядро самой программы
ЗЫ п
римитивный скрипт для фарма СОД for mamba
Последний раз редактировалось mira, 01.12.2010 в 19:28 .
04.10.2010, 01:15
#28
Пользователь
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
PHP код:
library MyFirstDLL ; uses SysUtils , Classes , Graphics , Forms , Windows ; const adres = '?DrawString@FCanvasUtil@@QAEHHHPBGPAVUFont@@VFColor@@@Z' ; adres1 = '??1FCanvasUtil@@UAE@XZ' ; adres2 = '?Render@FPlayerSceneNode@@UAEXPAVFRenderInterface@@@Z' ; text = 'ALF' ; procedure HelloWorld (); var DLLInstance : THandle ; FCanvasUtilAddr , BOB : PByte ; font : string ; x , y : integer ; begin { загружаем DLL } DLLInstance := LoadLibrary ( 'Engine.dll' ); BOB := GetProcAddress ( DLLInstance , adres ); FCanvasUtilAddr := GetProcAddress ( DLLInstance , adres1 ); font := 'Engine.DefaultFont' ; { ХЗ КАКОЙ ШРИФТ ЮЗАЕТ ЛИНЕЙКА } x := 200 ; y := 200 ; asm push 00FF0000h { цвет } push dword [ font ]{ Шрифт , В ФОРМАТЕ UFont - я хз как } push word [ text ] { Текст } push y { у } push x { х } mov ecx , FCanvasUtilAddr call [ BOB ] { вызываем FCanvasUtil :: DrawString ( int x , int y , ushort const *, UFont *, FColor )} end ; FreeLibrary ( DLLInstance ); end ; procedure FLayerCanvasRender ; cdecl ; asm { перед вызовом FPlayerSceneNode :: Render рисуем текст } call HelloWorld retf 0DC24h end ; procedure doDll (); var DLLInstance : THandle ; PlayerScenAdr : PByte ; Offset : DWORD ; begin { загружаем DLL } DLLInstance := LoadLibrary ( 'Engine.dll' ); { перехвачиваем FPlayerSceneNode :: Render } PlayerScenAdr := GetProcAddress ( DLLInstance , adres2 ); if VirtualProtectEx ( GetCurrentProcess , PlayerScenAdr , 10 , PAGE_EXECUTE_READWRITE , Offset ) then begin PlayerScenAdr ^ := $E9 ; Offset := Dword (@ FLayerCanvasRender )- DWord ( PlayerScenAdr )- 5 ; move ( Offset , Pointer ( DWord ( PlayerScenAdr )+ 1 )^, sizeof ( Offset )); end ; end ; exports doDll ; begin doDll (); end .
Вот мой код.
Осталось подправить аргумент шрифта)
UFont - хз как там
__________________
Все относительно...
Последний раз редактировалось ALF, 04.10.2010 в 01:18 .
04.10.2010, 01:19
#29
Местный
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
Цитата:
Сообщение от
ALF
PHP код:
library MyFirstDLL ;
uses
SysUtils ,
Classes ,
Graphics ,
Forms ,
Windows ;
const
adres = '?DrawString@FCanvasUtil@@QAEHHHPBGPAVUFont@@VFColor@@@Z' ;
adres1 = '??1FCanvasUtil@@UAE@XZ' ;
adres2 = '?Render@FPlayerSceneNode@@UAEXPAVFRenderInterface@@@Z' ;
text = 'ALF' ;
procedure HelloWorld ();
var
DLLInstance : THandle ;
FCanvasUtilAddr , BOB : PByte ;
font : string ;
x , y : integer ;
begin
{ загружаем DLL }
DLLInstance := LoadLibrary ( 'Engine.dll' );
BOB := GetProcAddress ( DLLInstance , adres );
FCanvasUtilAddr := GetProcAddress ( DLLInstance , adres1 );
font := 'Engine.DefaultFont' ; { ХЗ КАКОЙ ШРИФТ ЮЗАЕТ ЛИНЕЙКА }
x := 200 ;
y := 200 ;
asm
push 00FF0000h { цвет }
push dword [ font ]{ Шрифт , В ФОРМАТЕ UFont - я хз как }
push word [ text ] { Текст }
push y { у }
push x { х }
mov ecx , FCanvasUtilAddr
call [ BOB ] { вызываем FCanvasUtil :: DrawString ( int x , int y , ushort const *, UFont *, FColor )}
end ;
FreeLibrary ( DLLInstance );
end ;
procedure FLayerCanvasRender ; cdecl ;
asm
{ перед вызовом FPlayerSceneNode :: Render рисуем текст }
call HelloWorld
retf 0DC24h
end ;
procedure doDll ();
var
DLLInstance : THandle ;
PlayerScenAdr : PByte ;
Offset : DWORD ;
begin
{ загружаем DLL }
DLLInstance := LoadLibrary ( 'Engine.dll' );
{ перехвачиваем FPlayerSceneNode :: Render }
PlayerScenAdr := GetProcAddress ( DLLInstance , adres2 );
if VirtualProtectEx ( GetCurrentProcess , PlayerScenAdr , 10 , PAGE_EXECUTE_READWRITE , Offset ) then begin
PlayerScenAdr ^ := $E9 ;
Offset := Dword (@ FLayerCanvasRender )- DWord ( PlayerScenAdr )- 5 ;
move ( Offset , Pointer ( DWord ( PlayerScenAdr )+ 1 )^, sizeof ( Offset ));
end ;
end ;
exports
doDll ;
begin
doDll ();
end .
Вот мой код.
Осталось подправить аргумент шрифта)
UFont - хз как там
выложи скрин че там получилось)
За это сообщение mira нажился спасибкой от:
04.10.2010, 01:23
#30
Пользователь
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
та скринь не чего)
Клиет не находит шрифт и сразу закрывается (без ошибки)
P.S. Если ошибка в длинне аргументов то будет ошибка
PHP код:
History : FCanvasUtil :: DrawString <- ViewportLock1 <- Precaching <- UGameEngine :: Draw <- UWindowsViewport :: Repaint <- UWindowsClient :: Tick <- ClientTick <- UGameEngine :: Tick <- UpdateWorld <- MainLoop
Если нету ошибки в длинне - то все норм.
Но так как мы хз что за фонт юзает л2, и как передать этот аргумент - нас л2 просто закрывает)
Добавлено через 1 минуту
как видиш я использую font :='Engine.DefaultFont' - это не правильно
тип аргумента должен быть UFont, а у меня string получается)
Мало того надо знать шрифт...
Хотя обычно в Unreal Engine-овских играю по идеи юзается Engine.DefaultFont хД
__________________
Все относительно...
Последний раз редактировалось ALF, 04.10.2010 в 01:25 .
Причина: Добавлено сообщение
Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
Часовой пояс GMT +4, время: 03:29 .
vBulletin style designed by
MSC Team .
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод:
zCarot
Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!