Показать сообщение отдельно
Старый 04.10.2010, 01:15   #28
Пользователь
 
Аватар для ALF
 
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
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,BOBPByte;
        
font:string;
        
x,y:integer;
begin
    
загружаем DLL }
    
DLLInstance := LoadLibrary('Engine.dll');
    
BOB := GetProcAddress(DLLInstanceadres);
    
FCanvasUtilAddr := GetProcAddress(DLLInstanceadres1);
    
font :='Engine.DefaultFont'; {ХЗ КАКОЙ ШРИФТ ЮЗАЕТ ЛИНЕЙКА}
    
x:=200;
    
y:=200;
     
asm
    push 00FF0000h   
{цвет}
    
push dword [font]{ШрифтВ ФОРМАТЕ UFont я хз как}
    
push word [text] {Текст}
    
push y           {у}
    
push x           {х}
    
mov  ecxFCanvasUtilAddr
    call 
[BOB]       {вызываем FCanvasUtil :: DrawString(int xint yushort const *, UFont *, FColor)}
    
end;
    
FreeLibrary(DLLInstance);
end;

procedure FLayerCanvasRendercdecl;
asm
    
{перед вызовом FPlayerSceneNode :: Render рисуем текст}
  
call HelloWorld
  retf    0DC24h
end
;

procedure doDll();
var
        
DLLInstance THandle;
        
PlayerScenAdrPByte;
        
OffsetDWORD;
begin
    
загружаем DLL }
    
DLLInstance := LoadLibrary('Engine.dll');
    {
перехвачиваем FPlayerSceneNode::Render}
    
PlayerScenAdr := GetProcAddress(DLLInstanceadres2);
     if 
VirtualProtectEx(GetCurrentProcess,PlayerScenAdr,10,PAGE_EXECUTE_READWRITE,Offsetthen 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.
ALF вне форума   Ответить с цитированием