Сейчас на форуме: bartolomeo, -Sanchez-, morgot, sashalogout (+4 невидимых)

 eXeL@B —› Софт, инструменты —› MUltimate Assembler
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . >>
Посл.ответ Сообщение


Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 14 сентября 2009 09:42 · Поправил: BoRoV
· Личное сообщение · #1

Плаг для ольки, позволяющий добавлять/заменять в дизасме и соответствено в проге асм код даже выходящий за пределы если он вставляется посреди имеющегося кода, при этом все адреса у call, jcc, и прочего пересчитыются с учетом этой новой вставки.

// З.Ы. Было пять скринов пошаговой инструкции его использования, но автор почему-то их удалил
// З.Ы.2. Автор с россии, а че прошел мимо нас... хз

v.0.1
Первый релиз, в нем было несколько багов

v0.2
- Supports data disassembling and assembling as a C-style string.
- Suggests you to create a backup before disassembling, so that the modifications will be visible.
- Help added.
- Minor fixes.

v.0.3
- Disassembles external jumps and calls.
- Added an options dialog.
- Fixes a couple of crashes.
- A right click menu to make LCF-AT happy

That's all, I've completed my ToDo list

Кажется все он пофиксил, т.к. все говорили что те баги что были пофиксены

rammichael.com/

-----
Лучше быть одиноким, но свободным © $me




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 18 октября 2012 11:05
· Личное сообщение · #2

Лучше кнопка. И так часто Esc с F1 путается...



Ранг: 329.6 (мудрец), 192thx
Активность: 0.140.01
Статус: Участник

Создано: 20 октября 2012 00:42
· Личное сообщение · #3

RaMMicHaeL

Огромное тебе спасибо за прекрасный инструмент. Я с ним очень много работаю при распаковке программ и восстановлении обфусцированного кода (EXECryptor, Themida, и некоторые самопальные обфускаторы). При работе с файлами EXE все идет прекрасно, а вот при работе с DLL - имеются трудности. Например, я столкнулся с одной DLL, в которой имеется одна подпрограмма, часть которой сильно обфусцирована с применением массы инструкций PUSH/RET. Все эти инструкции PUSH обработаны с помощью таблицы релоков, чтобы получить валидные адреса. Я деобфусцировал код, привел его в читабельный вид, а далее мне нужно было вставить этот код на место обфусцированного кода. Поскольку нужно было переделывать таблицу релоков к изменившемуся коду, я запустил специальный скрипт, и с помощью родной таблицы релоков убрал привязку адресов к имеющемуся ImageBase, чтобы сдампировать программу. Однако восстановленный код, с помощью твоего инструмента, был привязан к ImageBase загрузки DLL. И мне пришлось вручную править все адреса и константы в восстановленном коде, чтобы получить нормальный дамп программы. Было бы очень неплохо иметь возможность в твоем инструменте, при необходимости, указывать нужный адрес привязки, чтобы плагин сам записывал имеющиеся константы и адреса с указанной пользователем базой. Это бы намного облегчило работу, когда приходится править вручную большое количество адресов.



Ранг: 42.9 (посетитель), 33thx
Активность: 0.040
Статус: Участник

Создано: 20 октября 2012 01:54 · Поправил: Konstantin
· Личное сообщение · #4

vnekrilov

Поддерживаю. Дизасм с RVA есть, если бы ещё к этому типу адресов - $$ прикрутить возможность асма на нужную ImageBase, то сделать новую таблицу релоков (с учётом перенесённого кода) очень просто.



Ранг: 15.3 (новичок), 118thx
Активность: 0.01=0.01
Статус: Участник

Создано: 22 октября 2012 15:26
· Личное сообщение · #5

vnekrilov пишет:
А можно ли сделать параллельно файл справки и на русском языке?

Можно, разрешаю

KingSise пишет:
неплохо было бы добавить меню "хэлп" из главного окна, тем более хелп имеется. Ну или по ф1

Оно есть в меню Plugins.

vnekrilov, Konstantin
Я не совсем понял. То есть, хочется для RVA адресов самому задавать ImageBase? Почему не подходит использование имени модуля?



Ранг: 42.9 (посетитель), 33thx
Активность: 0.040
Статус: Участник

Создано: 22 октября 2012 16:25 · Поправил: Konstantin
· Личное сообщение · #6

RaMMicHaeL пишет:
То есть, хочется для RVA адресов самому задавать ImageBase?

Да.
RaMMicHaeL пишет:
Почему не подходит использование имени модуля?

Потому что к нему привязана конкретное значение ImageBase. А хотелось бы другое в пределах этого же модуля.

Вся эта суета нужна чтобы сделать новую таблицу релоков, а для этого требуется два дампа длл с разными ImageBase.
Может быть это всё и лишнее. Уже достаточно наличия дизасма с RVA. (нужно только несколько раз перезагрузить длл в оле чтобы ImageBase был разный). Но иногда проще воспользоваться скриптом для пересчёта адресов(с использованием старой таблицы релоков) и вот в этом случае хотелось бы иметь возможность самому задать значение ImageBase для адресов правленного кода.

Может сделать что-то типо команды, например, set_ImageBase.Name=1000000, а далее уже пользоввать - $Name.1234 и т. д.
В таком случае можно использовать в качестве Name не только имя реального модуля, но и имя заданное в этой команде - Set.



Ранг: 329.6 (мудрец), 192thx
Активность: 0.140.01
Статус: Участник

Создано: 22 октября 2012 16:45 · Поправил: vnekrilov
· Личное сообщение · #7

RaMMicHaeL пишет:
Почему не подходит использование имени модуля?


Попробую объяснить на примере. Имеется DLL, скомпилированная по ImageBase - 400000. При загрузке DLL в отладчик используется файл LOADDLL.EXE, который сам грузится по ImageBase - 400000, и поэтому загружает DLL по ImageBase - 00870000 (на моем компе). Часть этой DLL имеет сильно обусцированный код, который я деобфусцировал, и собрал в одном месте. Вот фрагмент этого кода:

Code:
  1. @L_008A3353:
  2.          PUSH $$359A8
  3.          MOV EAX,DWORD PTR DS:[$$4AE58]
  4.          PUSH DWORD PTR DS:[EAX]
  5.          PUSH $$35974
  6.          MOV EAX,DWORD PTR DS:[$$4AE8C]
  7.          PUSH DWORD PTR DS:[EAX]
  8.          PUSH $$359B8
  9.          MOV EAX,DWORD PTR DS:[$$4FEB4]
  10.          PUSH DWORD PTR DS:[EAX*8+$$4FE5C]
  11.          PUSH $$35974
  12.          MOV EAX,DWORD PTR DS:[$$4FEB4]
  13.          PUSH DWORD PTR DS:[EAX*8+$$4FE60]
  14.          PUSH $$359C4
  15.          MOV EAX,DWORD PTR DS:[$$4AE58]
  16.          PUSH DWORD PTR DS:[EAX]
  17.          PUSH $$359C4
  18.          MOV EAX,DWORD PTR DS:[$$4AE58]


Этот код с помощью Multiline Ultimate Assembler я вставляю по адресу 0088EE30, и он приобретает такой вид:

Code:
  1. 0088EE30     PUSH 8A59A8
  2. 0088EE35     MOV EAX,DWORD PTR DS:[8BAE58]
  3. 0088EE3A     PUSH DWORD PTR DS:[EAX]
  4. 0088EE3C     PUSH 8A5974
  5. 0088EE41     MOV EAX,DWORD PTR DS:[8BAE8C]
  6. 0088EE46     PUSH DWORD PTR DS:[EAX]
  7. 0088EE48     PUSH 8A59B8
  8. 0088EE4D     MOV EAX,DWORD PTR DS:[8BFEB4]
  9. 0088EE52     PUSH DWORD PTR DS:[EAX*8+8BFE5C]
  10. 0088EE5A     PUSH 8A5974
  11. 0088EE5F     MOV EAX,DWORD PTR DS:[8BFEB4]
  12. 0088EE64     PUSH DWORD PTR DS:[EAX*8+8BFE60]
  13. 0088EE6C     PUSH 8A59C4
  14. 0088EE71     MOV EAX,DWORD PTR DS:[8BAE58]
  15. 0088EE76     PUSH DWORD PTR DS:[EAX]
  16. 0088EE78     PUSH 8A59C4
  17. 0088EE7D     MOV EAX,DWORD PTR DS:[8BAE58]
  18. 0088EE82     PUSH DWORD PTR DS:[EAX]


Теперь мне надо сохранить изменения в файле, но адреса во вставленном фрагменте кода мне нужно привязать к ImageBase DLL, т.е. к 00400000. Поэтому мне приходится вручную править все эти адреса, чтобы получить следующий вид этого фрагмента кода:
Code:
  1. 0088EE30     PUSH 4359A8
  2. 0088EE35     MOV EAX,DWORD PTR DS:[44AE58]
  3. 0088EE3A     PUSH DWORD PTR DS:[EAX]
  4. 0088EE3C     PUSH 435974
  5. 0088EE41     MOV EAX,DWORD PTR DS:[44AE8C]
  6. 0088EE46     PUSH DWORD PTR DS:[EAX]
  7. 0088EE48     PUSH 4359B8
  8. 0088EE4D     MOV EAX,DWORD PTR DS:[44FEB4]
  9. 0088EE52     PUSH DWORD PTR DS:[EAX*8+44FE5C]
  10. 0088EE5A     PUSH 435974
  11. 0088EE5F     MOV EAX,DWORD PTR DS:[44FEB4]
  12. 0088EE64     PUSH DWORD PTR DS:[EAX*8+44FE60]
  13. 0088EE6C     PUSH 4359C4
  14. 0088EE71     MOV EAX,DWORD PTR DS:[44AE58]
  15. 0088EE76     PUSH DWORD PTR DS:[EAX]
  16. 0088EE78     PUSH 4359C4
  17. 0088EE7D     MOV EAX,DWORD PTR DS:[44AE58]
  18. 0088EE82     PUSH DWORD PTR DS:[EAX]


Когда таких корректировок немного, то это можно сделать и вручную. А когда корректировок набегает до сотни, то это становится утомительным. Если бы я смог в Multiline Ultimate Assembler указать ImageBase вставляемого кода как 00400000, то мне не пришлось бы вручную корректировать вставляемый код.

Именно это я и имел ввиду в своем посте.

PS: Пока я писал это сообщение, Konstantin уже написал свой пост. Но я хотел бы кое-что уточнить в посте Konstantin. Когда я работаю с DLL, то я запускаю два отладчика с разными файлами LOADDLL.EXE, что позволяет мне загружать DLL по разным базовым адресам. Multiline Ultimate Assembler прекрасно привязывает адреса к разным базам, поэтому тут вопросов нет. Вопрос появляется, когда нужно сохранить изменения в файле, но с привязкой адресов к ImageBase DLL, указанной в PE-заголовке файла.



Ранг: 42.9 (посетитель), 33thx
Активность: 0.040
Статус: Участник

Создано: 22 октября 2012 17:07 · Поправил: Konstantin
· Личное сообщение · #8

vnekrilov
Из справки Multiline Ultimate Assembler


Может в оле (modules window (Alt+E))) посмотреть имя модуля с ImageBase=400000. И привязать первую команду (как в вашем примере) к модулю с ImageBase=400000, как то так:

PUSH $loaddll.359A8

ЗЫ. Не получится так, будут ошибки.




Ранг: 15.3 (новичок), 118thx
Активность: 0.01=0.01
Статус: Участник

Создано: 22 октября 2012 20:17
· Личное сообщение · #9

Konstantin пишет:
Может в оле (modules window (Alt+E))) посмотреть имя модуля с ImageBase=400000. И привязать первую команду (как в вашем примере) к модулю с ImageBase=400000, как то так:PUSH $loaddll.359A8ЗЫ. Не получится так, будут ошибки.

Можно. Все работает: http://i.imgur.com/m4mTe.png
Какой код выдает ошибку?

Другой вопрос, если на этом адресе нету модуля. Я хочу добавить возможность использовать RVA адрес без модуля, например:
PUSH $(00400000).1000



Ранг: 329.6 (мудрец), 192thx
Активность: 0.140.01
Статус: Участник

Создано: 22 октября 2012 21:19
· Личное сообщение · #10

При вставке кода в DLL, Multiline Ultimate Assembler пересчитывает адреса применительно к ImageBase загрузки DLL, причем этот адрес утилита берет автоматически. Для большинства DLL, которые мне приходилось распаковывать, используется стандартное значение ImageBase - 10000000. Родной лоадер LOADDLL.EXE, входящий в комплект поставки OllyDbg, загружает DLL по адресу, указанному в ее PE-заголовке, за исключением того случая, когда совпадают ImageBase обоих файлов - LOADDLL.EXE и DLL. В этом случае, DLL загружается по свободному адресу. И, если DLL загружается по адресу, указанному в PE-заголовке, то все получается хорошо - не нужно пересчитывать значения адресов. А вот во втором случае их приходится пересчитывать, что я и показал в своем предыдущем посте.



Ранг: 42.9 (посетитель), 33thx
Активность: 0.040
Статус: Участник

Создано: 22 октября 2012 22:28 · Поправил: Konstantin
· Личное сообщение · #11

RaMMicHaeL пишет:
Я хочу добавить возможность использовать RVA адрес без модуля, например:PUSH $(00400000).1000

Отлично! В принципе больше ничего и не нужно.
RaMMicHaeL пишет:
Можно. Все работает: http://i.imgur.com/m4mTe.pngКакой код выдает ошибку?

Попробуйте в вашем примере - push $loaddll.1000 взять RVA не 1000, а больше размера модуля loaddll, например 70000.
vnekrilov пишет:
При вставке кода в DLL, Multiline Ultimate Assembler пересчитывает адреса применительно к ImageBase загрузки DLL, причем этот адрес утилита берет автоматически.

Это не совсем так. Так будет если принудительно не указан никакой т.е. все RVA начинаются с $$, если в первом адресе с RVA явно указать модуль , например, PUSH $loaddll.359A8 (а не PUSH $$359A8) то все последующие адреса, начинающиеся с $$ будут вычисляться пользуя ImageBase модуля loaddll.



Ранг: 15.3 (новичок), 118thx
Активность: 0.01=0.01
Статус: Участник

Создано: 22 октября 2012 22:51
· Личное сообщение · #12

vnekrilov пишет:
При вставке кода в DLL, Multiline Ultimate Assembler пересчитывает адреса применительно к ImageBase загрузки DLL, причем этот адрес утилита берет автоматически.

При использовании адресов вида $$1000, утилита берет ImageBase с модуля адреса блока. А заменить все "$$" на "$LOADDLL." - чем не решение?

Konstantin пишет:
все RVA начинаются с $$, если в первом адресе с RVA явно указать модуль - например - PUSH $loaddll.359A8 (а не PUSH $$359A8) то все последующие адреса, начинающиеся с $$ будут вычисляться пользуя ImageBase модуля loaddll.

Не правильно.
Адреса вида $$1000 берут модуль с адреса блока. Например:
Code:
  1. <$module1.1000>
  2.  
  3.     CALL $$1010 ; CALL $module1.1010
  4.     CALL $module2.1010
  5.     CALL $$1010 ; опять же CALL $module1.1010
  6.  
  7. <00401000>
  8.  
  9.     CALL $$1010 ; Ошибка, адрес блока - не RVA адрес


Konstantin пишет:
Попробуйте в вашем примере - push $loaddll.1000 взять RAV не 1000, а больше размера модуля loaddll, например 70000.

Выдает ошибку "The RVA address exceeds the module size", то есть - RVA адрес выходит за пределы модуля. Все правильно.



Ранг: 42.9 (посетитель), 33thx
Активность: 0.040
Статус: Участник

Создано: 22 октября 2012 23:08 · Поправил: Konstantin
· Личное сообщение · #13

RaMMicHaeL пишет:
Не правильно.

У вас в справке пример можно понять двояко, я просто не проверил.

RaMMicHaeL пишет:
Все правильно.

RaMMicHaeL пишет:
А заменить все "$$" на "$LOADDLL." - чем не решение?

НЕ совсем совместимые вещи.
Вот если бы была возможность отключать такие ошибки было бы ещё правильнее. Для наших целей иногда не нужно проверять конечный адрес на наличие и предел.



Ранг: 15.3 (новичок), 118thx
Активность: 0.01=0.01
Статус: Участник

Создано: 22 октября 2012 23:35
· Личное сообщение · #14

Konstantin пишет:
У вас в справке пример можно понять двояко, я просто не проверил.

Исправлю. Хотя кроме примера есть и объяснение, как оно работает.

Konstantin пишет:
Вот если бы была возможность отключать такие ошибки было бы ещё правильнее. Для наших целей иногда не нужно проверять конечный адрес на наличие и предел.

Я думаю предложенный выше синтаксис ($(00400000).1000) решит эту проблему.



Ранг: 329.6 (мудрец), 192thx
Активность: 0.140.01
Статус: Участник

Создано: 23 октября 2012 11:37 · Поправил: vnekrilov
· Личное сообщение · #15

Konstantin пишет:
если в первом адресе с RVA явно указать модуль , например, PUSH $loaddll.359A8 (а не PUSH $$359A8) то все последующие адреса, начинающиеся с $$ будут вычисляться пользуя ImageBase модуля loaddll.


На подопытной DLL я попытался применить предложенный подход, и вот что я получил:



RaMMicHaeL пишет:
Я думаю предложенный выше синтаксис ($(00400000).1000) решит эту проблему.


А вот что я получил при попытке применить этот синтаксис:



Неужели так трудно сделать загрузку кода по указанной пользователем базе?



Ранг: 329.6 (мудрец), 192thx
Активность: 0.140.01
Статус: Участник

Создано: 23 октября 2012 11:56
· Личное сообщение · #16

RaMMicHaeL

Если тебе интересно поэкспериментировать с этой DLL, я могу выложить тебе ее на обменник вместе с листингом кода.



Ранг: 15.3 (новичок), 118thx
Активность: 0.01=0.01
Статус: Участник

Создано: 23 октября 2012 14:41
· Личное сообщение · #17

vnekrilov пишет:
На подопытной DLL я попытался применить предложенный подход, и вот что я получил:

Имена модулей чувствительны к регистру. (Я поправлю это в следующей версии)
Попробуй $LOADDLL.359A8

vnekrilov пишет:
А вот что я получил при попытке применить этот синтаксис:

Этот синтаксис - план на следующую версию. Пока его нету.

vnekrilov пишет:
Если тебе интересно поэкспериментировать с этой DLL, я могу выложить тебе ее на обменник вместе с листингом кода.

Я не думаю, что нужно. Я понял суть проблемы, предложил нормальное решение. Осталось только воплотить его в реальность.



Ранг: 329.6 (мудрец), 192thx
Активность: 0.140.01
Статус: Участник

Создано: 23 октября 2012 16:43
· Личное сообщение · #18

RaMMicHaeL пишет:
Имена модулей чувствительны к регистру.


Да, верно. В листинге, в блокноте, я заменил все символы "$$" на "$LOADDLL.", и все нормально получилось. Правда, были также откорректированы и несколько прыжков, но которые было легко вернуть назад (прыжков оказалось намного меньше), чем корректируемых адресов. Спасибо



Ранг: 15.3 (новичок), 118thx
Активность: 0.01=0.01
Статус: Участник

Создано: 24 октября 2012 20:33
· Личное сообщение · #19

Готов --> Multiline Ultimate Assembler <-- v2.1, с расширенным синтаксисом RVA адресов:

* Возможность вручную задавать базовый адрес, например:
PUSH $(00400000).1000
* Возможность использовать короткий синтаксис для адреса блока, например:
<$$1000>

Общий пример использования RVA адресов с последними нововведениями:
Code:
  1. <$module1.1000>
  2.  
  3.     PUSH $$2000 ; То же, что и $module1.2000
  4.     CALL $module2.1000
  5.  
  6.     PUSH $$2000 ; Опять $module1.2000
  7.     CALL $"m!@#$%';".1000
  8.  
  9. <$$1100> ; То же, что и $module1.1100
  10.  
  11.     NOP
  12.  
  13. <$(00400000).1000> ; 00401000
  14.  
  15.     PUSH $(01000000).2000 ; PUSH 01002000
  16.     CALL $$1100           ; CALL 00401100


| Сообщение посчитали полезным: Konstantin, vnekrilov, Bronco, NikolayD, plutos, Simargl, KingSise, Valemox, mak, stas_02

Ранг: 329.6 (мудрец), 192thx
Активность: 0.140.01
Статус: Участник

Создано: 04 ноября 2012 01:04 · Поправил: vnekrilov
· Личное сообщение · #20

RaMMicHaeL

Столкнулся еще с одной проблемой при использовании твоего прекрасного инструмента. При вставке кода типа:

Code:
  1.          MOV AL,BYTE PTR SS:[EAX+EBP-60]
  2.          MOV EDX,DWORD PTR SS:[EBP-28]
  3.          XOR BYTE PTR SS:[EDX+EBP-60],AL
  4.          MOV EAX,DWORD PTR SS:[EBP-28]
  5.          MOVZX EAX,BYTE PTR SS:[EAX+EBP-60]
  6.          MOV EDX,DWORD PTR SS:[EBP-2C]
  7.          MOVZX EDX,BYTE PTR SS:[EDX+EBP-60]
  8.          ADD EAX,EDX


MUltimate Assembler ассемблирует эти инструкции в таком виде:

Code:
  1. 006347B6     36:8A4428 A0     MOV AL,BYTE PTR SS:[EAX+EBP-60]
  2. 006347BB     8B55 D8          MOV EDX,DWORD PTR SS:[EBP-28]
  3. 006347BE     36:30442A A0     XOR BYTE PTR SS:[EDX+EBP-60],AL
  4. 006347C3     8B45 D8          MOV EAX,DWORD PTR SS:[EBP-28]
  5. 006347C6     36:0FB64428 A0   MOVZX EAX,BYTE PTR SS:[EAX+EBP-60]
  6. 006347CC     8B55 D4          MOV EDX,DWORD PTR SS:[EBP-2C]
  7. 006347CF     36:0FB6542A A0   MOVZX EDX,BYTE PTR SS:[EDX+EBP-60]
  8. 006347D5     03C2             ADD EAX,EDX
  9.  


Т.е., в опкод инструкций, работающих с BYTE, он добавляет впереди опкода байт <36:>. При работе с большим числом инструкций, эти байты увеличивают код инструкций до такой степени, что они не помещаются на свое родное место. Приходится вручную удалять эти байты <36:>, чтобы вложиться в заданный размер подпрограммы. Следует отметить, что и при ручной вставке кода в отладчике через окно ассемблирования инструкций, происходит тоже самое, но весьма хаотично - то вставляется символ <36:>, то не вставляется.

Может можно что-то сделать в MUltimate Assembler, чтобы устранить эту проблему?




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 04 ноября 2012 23:44
· Личное сообщение · #21

vnekrilov
Code:
  1. mov al,byte ptr [eax+ebp-60]

Аналогично ассемблирует? (убран SS )

-----
EnJoy!


| Сообщение посчитали полезным: SVLab

Ранг: 329.6 (мудрец), 192thx
Активность: 0.140.01
Статус: Участник

Создано: 05 ноября 2012 10:28
· Личное сообщение · #22

Jupiter

Попробовал твой метод. Действительно, если сделать все строки в прописных буквах (а не в заглавных), и в настройках отладчика убрать отображение сегментов SS, то все ассемблируется нормально. Большое спасибо за совет. Я думаю, что твой совет может быть полезным и для других юзеров, которые занимаются восстановлением обфусцированного кода.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 05 ноября 2012 23:22
· Личное сообщение · #23

vnekrilov пишет:
Действительно, если сделать все строки в прописных буквах (а не в заглавных)

Капитан очевидность подсказывает, что регистр тут значения не имеет.
А ман интела подсказывает, что дело исключительно в префиксе
36H—SS segment override prefix

| Сообщение посчитали полезным: vnekrilov


Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 30 ноября 2012 10:58
· Личное сообщение · #24

v2.1.1 (November 24, 2012)

OllyDbg v2: Updated to version 2.01.0001 of plugin interface.
OllyDbg v2: Fixed search and replace.

--> Link <--

-----
ds


| Сообщение посчитали полезным: vnekrilov, t0ShA, mak

Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 05 января 2013 15:50
· Личное сообщение · #25

RaMMicHaeL
Если не сложно - добавьте в список "Disasm hex number as:" вариант "$FFFE"

| Сообщение посчитали полезным: DimitarSerg

Ранг: 72.1 (постоянный), 30thx
Активность: 0.050
Статус: Участник

Создано: 05 января 2013 19:42
· Личное сообщение · #26

А сайт автора помер.



Ранг: 14.7 (новичок), 2thx
Активность: 0.010
Статус: Участник

Создано: 07 января 2013 19:02
· Личное сообщение · #27

can't download
could you upload it here as atachment?

THanks




Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 07 января 2013 20:20
· Личное сообщение · #28

dot

2fd7_07.01.2013_EXELAB.rU.tgz - multiasm.rar



Ранг: 14.7 (новичок), 2thx
Активность: 0.010
Статус: Участник

Создано: 08 января 2013 17:28
· Личное сообщение · #29

Gideon Vi

Thanks!



Ранг: 15.3 (новичок), 118thx
Активность: 0.01=0.01
Статус: Участник

Создано: 13 января 2013 18:44
· Личное сообщение · #30

Сайт снова в строю.

tihiy_grom пишет:
RaMMicHaeL
Если не сложно - добавьте в список "Disasm hex number as:" вариант "$FFFE"

Можно узнать зачем?
Во первых, оно будет конфликтовать с RVA адресами.
Во вторых, олькин ассемблер такой вид номеров не понимает.



Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

Создано: 13 января 2013 19:14
· Личное сообщение · #31

RaMMicHaeL пишет:
Можно узнать зачем?

для рипа в дельфи.
но асм вставки прекрасно работают с FFFEh
посему считаю эту фичу излишней


<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . >>
 eXeL@B —› Софт, инструменты —› MUltimate Assembler
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати