Вверх ↑
Этот топик читают: Гость
Ответов: 2059
Рейтинг: 132
#1: 2013-10-15 10:26:15 ЛС | профиль | цитата
Компонент для создания дизассемблеров и трассировщиков.
http://yadi.sk/d/C7k6j_mCAxNK6
Это мой "hello world" на Hiasm.
Предполагаю сделать линейку взаимодополняющих компоентов: ассемблера-редактора, коммпонента для автоматического создания комментариев в листинге и т.д. , всего около десятка. В один компонент не стал включать все, чтобы каши небыло.

карма: 6

4
Голосовали:Netspirit, foksov, andrestudio, flud
vip
#1.1контекстная реклама от партнеров
Ответов: 1376
Рейтинг: 197
#2: 2013-10-15 14:39:41 ЛС | профиль | цитата
flint2, а PEAnalysis будет выложен? В схеме он крестом накрыт... И исходный код disasm.dll будет показан или он секретен? [offtop]Во навопросировал [/offtop]
карма: 1

0
Ответов: 2059
Рейтинг: 132
#3: 2013-10-15 15:19:05 ЛС | профиль | цитата

foksov
http://yadi.sk/d/Lo6eC5fAAySMg
.dll будет показан или он секретен?

Будет.
Только надо его в хламе найти. Сам кое чего хотел подправить.
Как видно из названий dll функций - он на Си.
К вечеру выложу.
карма: 6

0
Ответов: 5227
Рейтинг: 587
#4: 2013-10-15 15:30:03 ЛС | профиль | цитата
flint2, dll не есть гуд конечно, было время и желание когда-то прикрутить это http://www.beaengine.org/ но желание куда то исчезло, женский пол оказался сильней Есть ещё hde32 (смотри прищепку) в IC пробовал, работает
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 2059
Рейтинг: 132
#5: 2013-10-15 16:00:15 ЛС | профиль | цитата
andrestudio
Это я так просто выложил, в продолжении темы в другом посте.
Но раз сказал, что линейку сделаю, придётся сделать.
По поводу dll, это понятно, что не гуд.
Вот сейчас пытаюсь сделать два действитенльно интересных компонента, да ничего не получается с компилятором Хиасма. Пришлось опять делать dll, хотя исходники написаны на дельфи.
Сделал dll, и всё равно застрял. В IC надо:
function GetEngines:TStrings;stdcall;external 'SAPIDLL.DLL' name 'GetEngines';
TStrings штатный класс в дельфи, а в Хиасме нету.
code_32030.txt
А вообше, библиотеки можно запихнуть в основной код, даже если нет исходников.
Со временем можно будет сделать такой инструмент в Hiasm.
Я только пробую, - как, чего.
P.S.
женский пол оказался сильней

Основной инкстинкт сельнее голода.
P.S.
Посмотрел hde32, немного попроше будет.
То что я выложил, скорее для трассировщика и отладчика заточено.
Ещё не все компоненты в комплекте.

карма: 6

0
файлы: 1code_32030.txt [3.6KB] [454]
Ответов: 5227
Рейтинг: 587
#6: 2013-10-15 16:29:54 ЛС | профиль | цитата
flint2, для себя этими костылями пользовался sysclasses.7z (заточены под KOL)
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
1
Голосовали:flint2
Ответов: 2059
Рейтинг: 132
#7: 2013-10-15 16:37:12 ЛС | профиль | цитата
andrestudio, Спасибо!
Сейчас буду изучать.
foksov
Вот исходники http://yadi.sk/d/_LAA4fLQAyrAW
карма: 6

0
Ответов: 211
Рейтинг: 52
#8: 2013-10-16 00:27:36 ЛС | профиль | цитата
TStrings — абстракт­ный класс, а TStringList реализующий его потомок. В КОЛ это будет указатель на созданный глобальной процедурой NewStrList/NewStrListEx объект с типом PStrList или PStrListEx соответственно. NewStrListEx реализует дополнительно работу с объектами - методы AddObject, InsertObject и т.д.
с учетом сказанного функция выглядит так function GetEngines:PStrList;stdcall;external 'SAPIDLL.DLL' name 'GetEngines';
Но важно учитывать, что библиотека имеет свой менеджер памяти и размещается в своем пространстве, отличном от основного приложения. Можно смело ожидать "бешеных указателей", если не использовать разделяемую память, вроде SharedMem.
Важно еще, объекты в КОЛ используются в качестве прототипов. Т.е. вы создаете свой объект со своими методами, а к "штатным" обращаетесь по указателям после создания объекта соответствующей глобальной функцией NewXXX.
карма: 1
слтв
1
Голосовали:flint2
Ответов: 2059
Рейтинг: 132
#9: 2013-10-16 11:47:14 ЛС | профиль | цитата
Minkovsky
Да, спасибо.
Я уже так делал.
function GetEngines: PStrList;stdcall
Я это понял, когда ты написал в другом посте:
MyStrList:=NewStrList,
где MyStrList имеет тип PStrList.


Можно смело ожидать "бешеных указателей", если не использовать разделяемую память, вроде SharedMem.

Нет, как раз с указателями всё в порядке. Просто получается, что PStrList, образно говоря, это часть от TStrings.
Попробую сделать ассемблерную вставку(выделено жирным).
Ниже кусок сделанный не в Hiasm.
...
* Reference to control TForm1.ComboBox1 : TComboBox
|
00457DDC 8B8300030000 mov eax, [ebx+$0300] ; в eax GetEngines:TStrings;stdcall - тут всё в порядке.

* Reference to field TComboBox.Items : TStrings
|
00457DE2 8B803C020000 mov eax, [eax+$023C]
00457DE8 8B08 mov ecx, [eax]
* Reference to method TStrings.Add(string)
|
00457DEA FF5138 call dword ptr [ecx+$38]
00457DED 66FF45FA inc word ptr [ebp-$06]
00457DF1 66FFCE dec si
00457DF4 75D4 jnz 00457DCA
00457DF6 33D2 xor edx, edx
...
Но это локальное решение, а нужно глобальное.
Или, как предложил andrestudio.
Я тоже для себя так делал, с той лиш разницей, что брал SysUtils.pas и SysConst.pas из Дельфи 4 и клал их в директорию code.
В юните заменял KOL на SysUtils. А как быть пользователям? Тоже искать Дельфи 4 или sysclasses.7z?
Оказалось, что проблемы нет! Только сейчас дошло.
При установке компонента, все pas файлы автоматом перепишутя в директорию code.
Просто их надо положить рядом с юнитом компонента, как иконку.
Со временем и зтого не надо будет делать.

andrestudio
dll не есть гуд конечно,

Думаю, что не так.
В случае с dll, все десять компонент разделяют один ресурс таблицы кодов. И даже с одним компонентом, тоже оправдано.
Для того, чтобы сделать полноценную схему, надо применить несколько таких элементов с разными модами.
В случае присутствия таблицы кодов в каждом элементе получится слишком расточительно.

карма: 6

0
Ответов: 5227
Рейтинг: 587
#10: 2013-10-16 17:46:54 ЛС | профиль | цитата
flint2, всё что касаемо костылей это нелегально и в пакет соответственно не попадёт (как и в любую сборку скорей всего), что касаемо дизасемблера то видится мне что особого интереса не представляет (можно использовать спец. маркеры и смотреть в нормальном комфортном отладчике), другое дело пошаговый отладчик где допустим можно выставить бряк в коде по адресу процедуры или функции и наблюдать за регистрами флагами и стёком)

p.s это не тз это просто мысли вслух
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 2059
Рейтинг: 132
#11: 2013-10-16 21:10:47 ЛС | профиль | цитата
что касаемо дизасемблера то видится мне что особого интереса не представляет

Задачи разные бывают. Это OLLYDBG один в один + дополнительные возможности.
Опять же для тренировки мозгов полезно. Имея всё кубики, надо подумать, как грамотно сделать дизасемблер.
Учесть все переходы, в том числе через стек, закомментировать, разделить код с данными.
Но не суть.
это не тз это просто мысли вслух

Продолжу их.
всё что касаемо костылей это нелегально и в пакет соответственно не попадёт (как и в любую сборку скорей всего)

Проект закрыт и развивается стихийно, Официальная сборка очень куцая, при добавлении элементов, многие не работают.
У кого она годами правилась, наверное доведена до ума, а из архива никуда не годится.
Пробовал ставить HiAsm_4.04b185_2011-12-28 , тоже с ошибками, а главное не сразу видны.
Только HiAsm_4.04b185.20-01-11_AltBuild_v1235.01 более мение, и то чего то подбирал.
По моему KOL или .compilerDelphi. Обновление только вручную, иначе геморою выше крыши.
Поэтому о каком стандарте может идти речь? После закрытия проекта все дополнения, по определению становятся нелегальными.
Изначально стратегической ошибкой был отказ от SysUtils. Причины понятны, но это стало Ахилесовой пятой.
всё что касаемо костылей

Если эти костыли исправляют стратегическую ошибку, то это не костыли а панацея.
Если к проекту есть интерес, то он не закрыт и является живым и подчиняется законам природы.
KOL показал свои недостатки, может "костыли" ещё худший вариант, только время покажет.
Почему то мне кажется, что появится куча компонентов, сделанных из заготовок с дельфи форумов, которые не вписались в существующую концепцию. Думаю это не плохо. И в конце концов, одно не отменяет другого.

это нелегально и в пакет соответственно не попадёт

Кто это решает, если проект закрыт?
Если есть такой, то в первую очередь нужно позаботитя о новой сборке с новыми элементами, без заплат.
Я так понимаю это народное творчество, и это самое ценное.
Было бы глупо пытаться рулить всем этим, не являясь разработчиком.

карма: 6

0
Гость
Ответов: 17029
Рейтинг: 0
#12: 2013-10-16 23:02:41 правка | ЛС | профиль | цитата


Редактировалось 5 раз(а), последний 2021-06-22 14:45:17
карма: 0

0
Ответов: 2059
Рейтинг: 132
#13: 2013-10-16 23:27:44 ЛС | профиль | цитата

Это касается только среды, которая так и останется в неизменном виде. А по поводу пакетов, так все открыто - создавай, исправляй, дополняй. Тоже самое и с исходниками кодогенератора.

Само собой разумеется. Другое не обсуждается.
которые после обновления исчезают слить в отдельную папку и создать общий инсталл для них.
Это технологии, я по другому делаю, третий иначе. Не суть как, факт что надо чего то сохранять.
Не об этом речь. Речь о том, на сколько оправдан консерватизм.

карма: 6

0
13
Сообщение
...
Прикрепленные файлы
(файлы не залиты)