Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2010.03.28;
Скачать: [xml.tar.bz2];

Вниз

Компилятор в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.004 c
1-1245066677
RWolf
2009-06-15 15:51
2010.03.28
чтение из COM-порта - загадочное поведение программы


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


15-1262295022
Юрий
2010-01-01 00:30
2010.03.28
С днем рождения ! 1 января 2010 пятница


15-1262485087
Кто б сомневался
2010-01-03 05:18
2010.03.28
RSA шифр


4-1210920061
REA
2008-05-16 10:41
2010.03.28
COM порт, асинхронные чтение запись





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский