|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Авг 28, 2004 10:18:05 Извините, что не по теме. imho если уж начинать, то тогда так: decoder: ;sub eax,eax movzx eax,byte ptr [esi];mov al,byte ptr [esi]; начало кода к-рый дизасм. inc esi;mov edx,opcode[eax*4] jmp opcode[eax*4];edx По теме: ещё есть такая штука как RosAsm. C notepad и сalc он с налёту не пока справляется, но сама концепция интересная и opensource. Синтаксис.. хм, в общем это не MASM =) |
|
|
Дата: Авг 28, 2004 14:01:47 zzzyab >Про все эти sib и моdr я знаю,и соласен таблица опкодов большая и она там не одна а про внуков ты сильно приувеличел, - в ваших дизасмах тоже самое В моей таблице ~214 эелементов по 9 байт (1.8кб), там все общие инструкции c дополнительными группами. Это по-твоему большая таблица? >только там еще и if\case, Код фукции декодирования ~1400 батй (1.4кб) да в ней достаточно много команд сравненя(test и cmp всего ~100) и что? Первую версию я писал на ассемблере, естественно, код быль лучьше, таблица ~1.0кб(без индексов имен и псевдо операндов) функция ~400 байт,вносить частые изменения и менять код очень проблематично и долго :( >а мой кусок кода это всего лиш пример работающей без сase\if. А многоли ты выиграешь от такого подхода, по скорости да, а в остальном? |
|
|
Дата: Авг 28, 2004 22:00:49 zzzyab У тебя пример дизасма с использованием ООП - имхо для дизасма ООП не нужно. Вообще редкий проект проиграет от использования ООП. Но мой код очень легко переделать в вариант без ООП - просто вынести из классов методы и всё! |
|
|
Дата: Авг 29, 2004 01:53:25 zzzyab > htm2chm из _http://yarix.by.ru/ - нерабочая. Наверне из-за того что у меня нет МСИЕ. МСИЕ это что, IE что-ли? Почему нерабочая, ты в винде, что прога то пишет? Надеюсь ты русскую версию скачал(бесплатная, полнофункциональная), у меня htm2chm 3.0.6 |
|
|
Дата: Авг 29, 2004 02:32:18 Asterix htm2chm включается, но все функции не выполняются - "сlass not registered", - ИЕ не установлен, и не собираюсь его устанавливать, потому и нужна подобная прога, работающая без ИЕ. Smile да у меня больше таблиц - все 4 байтные:превичный опкод (на все 256),вторичный опкод (уже меньше раза в 2),modrm,sib,регистры это все маленькие таблички так что это еще меньше, - не больше 1,8 кб это точно. О таблицах уже достаточно. Давайте перейдем к алгоритмам определения данных и ветвлению. У кого есть примеры кода? |
|
|
Дата: Авг 29, 2004 02:51:23 zzzyab > ИЕ не установлен, и не собираюсь его устанавливать, потому и нужна подобная прога, работающая без ИЕ. Не понял, IE ведь ставится виндой по умолчанию и его вроде как нельзя удалить? Потом, чем тебе IE мешает? Я пользуюсь Оперой, но это не мешает быть установленным и IE, они никак не конфликтуют. |
|
|
Дата: Авг 29, 2004 12:53:39 Люди, объясните мне кто-нибудь, почему Оля вдёт себя следующим образом: Я пишу в тексте программы Int3. При передаче управления на эту команду винда показывает мне приглашение отладиться. Если я выбираю "отмена" (т.е. отладка), то грузится отладчик по умолчанию - Оля. (здесь пока всё ясно) А вот тогда и начинается непонятное: Int3 в совокупности в предыдущим байтом считается какой-либо недопустимой командой (например in или запись/чтение в/из недоступной области памяти). Приходится писать Nop Int3 Nop. Чтобы было понятно, что предшествующая Int3 команда закончилась и Int3 - это новая команда. P.S. Вроде как раз по теме вопрос. |
|
|
Дата: Авг 29, 2004 16:57:01 Foamplast По теме? Мужык, вполне возможно, что ставишь ты int3 в конце неполной инструкции или переход попадает не на int3, а предидущий байт или другая инструкци портит код, например: jmp $+3 db 0xE6 int3 зпись в порт не из 98/me, наверное рапрещена? и поэтому тебе кажется что ты вылетаешь по int3, не надо бросать презрительный вгзляд на олю, проверь еще раз тк хз, что у тебя там случилось |
|
|
Дата: Авг 30, 2004 15:47:26 · Поправил: zzzyab Это не в тему. ИЕ создает угрозу безопасности, - у меня свой вариант установки win98 типо 98lite, в 2000 пока не умею делать установку чистой от ИЕ системы. И мне не нужны проги, к-рые без этого ИЕ, имхо побочного в системе, не работают. И для этой темы можно создать отдельный пост (ер. "Нужен ли ИЕ ?" ). А сдесь давайте про соотв. алгоритмы. |
|
|
Дата: Авг 30, 2004 20:00:14 zzzyab Пока нету времени добавить в движок анализ инструкции и некоторые дополнительные структуры, а ты уже говоришь о разделении кода/данных,определении ветвлений, как только будет готова следующая вервсия, приму участие в обсуждении |
|
|
Дата: Авг 31, 2004 01:18:13 · Поправил: Foamplast Smile, На Олю взгяд самый лучший, я ей по нескольку часов на дню пользуюсь. Вопрос в том, что я пишу программу: Mov Ax, 0xE566 Xor Ebx, Ebx И вставляю туда Int3: Mov Ax, 0xE566 Int3 Xor Ebx, Ebx Когда запускается Оля она мне пишет: in eax, 0CC xor ebx, ebx При выполнении Step Over (F8) Оля застревает на команде с пояснением: Privileged instruction - use Shift F7/F8/F9 to pass exception to program. О чём я и спрашивал. Это вроде как разбор примера движка дизассемблирования. P.S. Да, кстати Int3 я намеренно вставляю, чтобы отладить программу с определённого места (это я к словам "вылетаешь по Int3"). Только приходится писать не Int3, а Nop Int3 Nop. |
|
|
Дата: Авг 31, 2004 02:52:26 · Поправил: Smile Foamplast >О чём я и спрашивал. Это вроде как разбор примера движка дизассемблирования. А вот еще один мистический пример дизассемблирования: если в полнолуние, в ручную, 666h раз, набрать dw 666h а потом дизассемблировать получится 666h инструкций PUSH ESatana |
|
|
Дата: Сен 5, 2004 21:13:31 Есть инструкция с числом. Дизасемблируется без проблем, но это может быть как просто число так и offset.Это наверное самое сложное в дизасме - пока нет метода лучше чем у Windasm, но он и половины offset`ов не находит. А как определить размер блока по offset`у вообще не имею понятия. Кто-нить работал над этим ? |
|
|
Дата: Сен 6, 2004 19:54:15 zzzyab пока нет метода лучше чем у Windasm У Windasm и метода то особого нет :) - строки только и распознаёт А как определить размер блока по offset`у вообще не имею понятия. Кто-нить работал над этим ? Для начала надо определить, на что указывает число - код или данные (или вообще никуда не указывает). Если на данные - проверить не является ли блок строкой. Также концом блока можно считать ближайший адрес, на который указывает offset в какой-нибудь другой инструкции. Я сейчас работаю над проблемой разделения кода и данных. Фиг знает, когда закончу, т.к. времени очень мало. Но определённые идеи есть. |
|
|
Дата: Сен 7, 2004 01:57:08 А если код и данные совмещены? Я переодически забавлялся подобными трюками. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.094 |