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

Discussion in 'Мировые новости. Обсуждения.' started by Suicide, 20 Oct 2012.

  1. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    2,373
    Likes Received:
    6,619
    Reputations:
    693
    Вшитие ассемблерного кода в проект на delphi через объектник
    четверг, 18 октября 2012 г.
    http://bydood.blogspot.com/2012/10/delphi.html



    Итак ребята,по этому счету я не нашел практически ничего (мб разучился гууууглить?))).
    бывает когда возможностей 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