Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.03.28;
Скачать: CL | DM;

Вниз

Компилятор в EXE на Delphi с исходниками.   Найти похожие ветки 

 
tmtlib   (2010-01-06 00:23) [0]

Если кто знаком с ассемблером, прошу протестить мой новый проект - компилятор ассемблера на Delphi: http://www.igrodel.ru/tdg3d/pe-asm0.2.zip
Пока что это только пробная версия, с некоторыми ограничениями.
Размер откомпилированных файлов 1кб!


 
oxffff ©   (2010-01-06 00:28) [1]


> tmtlib   (06.01.10 00:23)  


А ведь начал ты с gamedev.ru. :)


 
Rouse_ ©   (2010-01-06 01:14) [2]

Код не тестил - глянул мельком. Вопрос, а почему столь мало опкодов?
Ммм, вообще молодец, только боюсь что расширять сложновато будет...


 
Kerk ©   (2010-01-06 01:22) [3]

А под какую ОС компилит? В смысле что там - COM, PE или что?


 
Rouse_ ©   (2010-01-06 01:28) [4]


> Kerk ©   (06.01.10 01:22) [3]
>
> А под какую ОС компилит? В смысле что там - COM, PE или
> что?

Ну зудя по срезанному заголовку, это РЕ :)

procedure RenderExeHeaders;
begin

fillchar(ExeBinary,sizeOf(exebinary),0);

{ --- header-1 (DOS) at $00 --- }
WriteS("MZ",     $0);  // "MZ" signature
Write4($40,      $3C); // header-2 position

{ --- header-2 (WIN32-PE) at $40  --- }
WriteS("PE"#0#0, $40); // "PE" signature


 
Rouse_ ©   (2010-01-06 01:31) [5]

Кстати на такой заголовок гарантированно будут ругаться большинство псевдоантивирей :)


 
tmtlib   (2010-01-06 01:33) [6]

Компилирует в win32 PE. Секция только одна (хотя в версии 0.1 три секции).

Добавление опкодов не самый сложный: к примеру для относительного jmp:
if xparse(cpu_s, "jmp 0x????????") then xcpu("E9"+xdigit(1));
xparse - проверяет строку на соответствие формату "jmp 0xDWORD",
xcpu - шлёт опкод E9 и число 0xDWORD
остальное по аналогии.

В версии 0.3 добавлю больше опкодов и длину секции расширять надо, а то код уже до предела почти влазит.


 
Rouse_ ©   (2010-01-06 01:34) [7]


> Rouse_ ©   (06.01.10 01:31) [5]
>
> Кстати на такой заголовок гарантированно будут ругаться
> большинство псевдоантивирей :)

Собственно об чем и речь шла:
http://www.virustotal.com/ru/analisis/9f8d66fb65b69be12bfdb02dd783dcbfb24d5091805725bac080529ed663af82-1262730765

ЗЫ: хотя странно, я думал будет больше, видать детские ляпы некоторые начали править :)


 
Rouse_ ©   (2010-01-06 01:39) [8]


> tmtlib   (06.01.10 01:33) [6]
>
> Компилирует в win32 PE. Секция только одна (хотя в версии
> 0.1 три секции).
>
> Добавление опкодов не самый сложный

Не самый - верно, но ты не производишь формализации кода с рассчетом на программиста, который пишет в другом стиле (лишние пробелы - переносы кареки и т.п.)
А самое главное - отсутствие поддержки макросов. Это первое что необходимо сделать для асма. (но вообще молодец)


 
tmtlib   (2010-01-06 01:43) [9]

peasm02.exe - так это ж на Delphi

http://www.virustotal.com/ru/analisis/76d5deb9a00d8918c3059beea1667391041941cc1951df0f46bbb928c444eb1b-1262731167

а вот hello.exe не все антивирусники полюбили.


 
писатель ассемблеров   (2010-01-06 01:43) [10]


> остальное по аналогии.


по аналогии

lock xchg ax,fs:[ebx*2+234567h][eax]

по аналогии у команды mov больше всего разнообразных кодов операции

mov ax,cs
mov eax,cr0
mov eax,fs:[0]
mov ebp,esp
mov gs:[eax+2],ebx
mov ebx,gs:[eax+2]
mov al,2
mov edx,1
....

Это все разные коды операции


> if xparse(cpu_s, "jmp 0x????????") then xcpu("E9"+xdigit(1));


не беспокоит, что в jmp смещение от текущего ip отсчитывается ?


 
Rouse_ ©   (2010-01-06 01:44) [11]

А, ну тогда все норм, я прост подумал что peasm02.exe это демо (не компилил ибо).
Ну а раз так, то предыдушее мое высказывание снимается - они все еще болеют детскими болезнями :)


 
Rouse_ ©   (2010-01-06 01:47) [12]


> писатель ассемблеров   (06.01.10 01:43) [10]

Ну ты наскочил :) Да еще и с атомарным префиксом :) (кстати наскок помню xchg в нем не нуждается). Дай парню крылья раскрыть :)


 
tmtlib   (2010-01-06 01:53) [13]

xparse(cpu_s,"mov ??,??") мда... Конечно это не идеальный вариант. А что делать? Идея ведь возникла после написания дизассемблера под adsp21xx, там и опкоды-то все одинаковой длины. Поизучать ассемблер разве что как время выдастся.


 
писатель ассемблеров   (2010-01-06 01:54) [14]

Как написавший за свою жизнь три ассемблера, могу сказать, что ни макросы, ни генерация PE-формата не составляют особенного труда, а вот распознавание команд архитектуры x86 и x64 - тут геморрой и поджидает.

Читай мануалы с http://www.intel.com/products/processor/manuals/index.htm


 
Rouse_ ©   (2010-01-06 02:00) [15]

Игорь, ну он-же свой ассемблер пишет, и уж парсер на собственный вариант урезанного асма то я думаю самое легкое написать :)
Вот например вот это: МАМА МЫЛА РАМУ - будед push eax :)
Чамубы и не? :))


 
tmtlib   (2010-01-06 02:01) [16]

мануалы скачал ещё раннее. По сравнению с наглядными картинками в analog devices у intel всё выглядит не так приветливо. Дело даже не спасает футуристический шрифт. Реально помогли ollydbg и hiew.


 
Rouse_ ©   (2010-01-06 02:03) [17]


> tmtlib   (06.01.10 02:01) [16]

Кстати, у ольки исходник дизасма открыт, я в свое время когда упарился свой доводить там подглядывал - советую. Правда у тебя задача немног другая (сбор а не разбор :)


 
tmtlib   (2010-01-06 02:07) [18]

вот только навешу сверху интерпретатор паскаля в свой ассемблер, тогда можно будет хоть чему-то порадоваться.


 
Rouse_ ©   (2010-01-06 02:09) [19]


> tmtlib   (06.01.10 02:07) [18]
>
> вот только навешу сверху интерпретатор паскаля в свой ассемблер

А вот это имхо рано... Пока что необходим простейший интерпретатор простейшего ассемблера - а вот потом.


 
tmtlib   (2010-01-06 02:12) [20]

этим и занимаюсь


 
oxffff ©   (2010-01-06 10:14) [21]


> tmtlib   (06.01.10 02:07) [18]
> вот только навешу сверху интерпретатор паскаля в свой ассемблер,
>  тогда можно будет хоть чему-то порадоваться.


Интерпретатор паскаля уже есть у меня. :)
Было бы здорово, если бы ты занялся оптимизацией при кодогенерации.
Вообщем взял бы на себя функции backend"а.
Вообщем напиши для чего ты этим занимаешься.


 
Кто б сомневался ©   (2010-01-06 16:38) [22]


> Rouse_ ©   (06.01.10 01:31) [5]
>
> Кстати на такой заголовок гарантированно будут ругаться
> большинство псевдоантивирей :)


Уже кто то залил на вирустотал hello.exe.
Хваленный АП Mcaffee протупил.
4/41


 
Anatoly Podgoretsky ©   (2010-01-06 17:19) [23]

> Кто б сомневался  (06.01.2010 16:38:22)  [22]

У меня все чисто, никаких известных вирусов.


 
Anatoly Podgoretsky ©   (2010-01-06 17:23) [24]

Кстати я посмотрел по ссылке, ни один из четырех АВ не назвал это вирусом, у них только сомнение.


 
Сергей М. ©   (2010-01-06 19:47) [25]


> tmtlib   (06.01.10 02:07) [18]


Уже изобретенные велосипеды тебе в помощь:

http://www.brothersoft.com/publisher/virt-laboratory.html
http://npascal.sourceforge.net/


 
Кто б сомневался ©   (2010-01-06 20:10) [26]


> Anatoly Podgoretsky ©   (06.01.10 17:19) [23]
>
> > Кто б сомневался  (06.01.2010 16:38:22)  [22]
>
> У меня все чисто, никаких известных вирусов.


Те антивирусы которым я реально доверяю (последняя инстанция):
Каспер. и DrWeb  
Мнение основано на тестах во времена работы тестировщиком.



Страницы: 1 вся ветка

Текущий архив: 2010.03.28;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.01 c
15-1263131112
Студент Игорь
2010-01-10 16:45
2010.03.28
Помогите новичку


15-1263047943
AlexDan
2010-01-09 17:39
2010.03.28
Kepler ищет планеты..


15-1262873481
anton773
2010-01-07 17:11
2010.03.28
Пожиратель траффика!!!


2-1264752952
s_t_d
2010-01-29 11:15
2010.03.28
Последовательность, орг. переход на новую страницу


11-1214083278
Jon
2008-06-22 01:21
2010.03.28
Happy Birthday KOL!