Общее·количество·просмотров·страницы

четверг, 18 октября 2012 г.

Вшитие ассемблерного кода в проект на delphi через объектник

Итак ребята,по этому счету я не нашел практически ничего (мб разучился гууууглить?))).
бывает когда возможностей BASM не хватает,а писать все на низком уровне нет ни времени ни желания,особенно у тех кто работает с malware.

Поэтому есть прекрасная штука по вшитию ассемблерного кода.
Чем этот метод хорош:все идет в куче,не надо никаких библиотек таскать.

Итак:

;messagebox
.386
.model flat,stdcall
option casemap:none

include include\windows.inc
include include\kernel32.inc
include include\user32.inc

includelib lib\kernel32.lib
includelib lib\user32.lib


.data
mes db 'HOW ARE YOU?',0
tit db 'MASM',0

.code

public testproc

testproc proc

invoke MessageBox,0,addr mes,addr tit,0
invoke ExitProcess,0

testproc endp

end

так у нас выглядит исходник.он немного отличается от стандарта:
нету метки старт,public описывает идентификатор, как доступный из других модулей.
дальше оформляем любой код в процедуру.

делаем только ассемблирование, линковку не проводим.

на выходе получаем file.obj

теперь конвертируем его программой coff2omf (в конце поста ссылка на скачивание программ)

затем полученный объектник еще раз конвертируем в понимаемый для делфи через omf2d

все.осталось только подключить объектник к нашей программе.

перед implementation указываем ф-ю
function testproc: dword; stdcall;
а после implementation
подключаем командой {$L name.obj}
function testproc: dword; stdcall; external;

и вызываем просто как процедуру
конец:)

ссылка на скачивание программ
http://splashed.ucoz.ru/coff2omf_omf2d.rar

PS:
друзья блог открыт для анонимного комментирования,если есть какие то вопросы,оставляем комменты,по возможности отвечу:)

Комментариев нет:

Отправить комментарий