и так у меня код сейчас выглядит так
PHP код:
library MyFirstDLL;
uses
SysUtils,
Classes,
Graphics,
Forms,
Windows;
const
adres = '?DrawString@FCanvasUtil@@QAEHHHPBGPAVUFont@@VFColor@@@Z';
type
TBOB = procedure(x,y:Integer; text, font:PChar; color:TColor); stdcall;
procedure HelloWorld();
var
DLLInstance : THandle;
BOB: TBOB;
font,text:string;
begin
{ загружаем DLL }
DLLInstance := LoadLibrary('Engine.dll');
@BOB := GetProcAddress(DLLInstance, adres);
font:=PChar('Font1')'
text:=PChar('ssssssssss');
asm
push 0FFFFFFh
push font
push text
push 100h
push 100h
mov ecx, адрес фунции??? какой...?
call [BOB]
end;
FreeLibrary(DLLInstance);
end;
{Какой-нибудь код, в котором используется SomeBuffer.}
exports
HelloWorld;
begin
end.
Цитата:
указатель на обьект класа канваса, который луче всего получить перехватив один из его методов (курим тему хуков)
|
вот тут я и не понял...
Нам надо указать адрес функции
PHP код:
?DrawString@FCanvasUtil@@QAEHHHPBGPAVUFont@@VFColor@@@Z
или чего? О_о
У меня есть полностью от "Декомпилированый" engine.dll прогой IDA pro (думаю знаете). но все равно туплю)
в пушом параметров - понял)))
но в регистр ecx - хз О_о
Пробовал без него - клиент запустился, на екране пусто)
Добавлено через 21 час 47 минут
потупил я потупил и пришла в голову мысль в еах засунуть адрес
PHP код:
FCanvasUtil::~FCanvasUtil
Только какой именно? тот что получают методом GetProcAddress? или туда надо оригинальный RVA?