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

 eXeL@B —› Софт, инструменты —› Дизасм.
<< . 1 . 2 . 3 . 4 . >>
Посл.ответ Сообщение


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

Создано: 24 октября 2016 12:21 · Поправил: difexacaw
· Личное сообщение · #1

Здрасте.

Необходим быстрый, очень быстрый дизассемблер x86. Должен уметь определить длину инструкции и размер адресуемой памяти(eg: inc dword [eax] -> 4байта).

Есть множество всяких разных, но обычно они весьма толстые, либо не поддерживают определение размера данных. Свой делать пока нет времени.

Нужен если не с этой фичей, то хотя бы дизасм длин. Тот который я юзаю не профайл.

-----
vx





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

Создано: 26 октября 2016 19:03 · Поправил: DenCoder
· Личное сообщение · #2

difexacaw
Помнится, что у меня тоже когда-то была задача внедрения своего кода в код приложения. Самое простое решение - это создать новую секцию, копировать туда код нужных функций с вставленным своим, а в нужной функции вставлять джамп на модифицированную. Всё бы ничего, но двиг делал, забыв сначала про фиксапы, что их тоже надо по мере необходимости добавлять в таблицу релоков, а местами и изменять, если функция начинается сразу с подобной mov eax, [address]. Обнаружил эту необходимость позже для dll, и переделывал. Интересно - Вы это учли? )

Добавлено спустя 6 минут
Просто в Вашем алго этого не нашёл )

-----
IZ.RU





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

Создано: 26 октября 2016 19:17 · Поправил: difexacaw
· Личное сообщение · #3

DenCoder

Вы путаете разницу между патчем в памяти и патчем модуля, последнее есть инфект и для него нужно обрабатывать фиксапы.

Добавлено спустя 27 минут
Потестил дизасм длин хьюва(Dila), кривая поделка.

-----
vx




Ранг: 0.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 27 октября 2016 11:47
· Личное сообщение · #4

difexacaw
http://z0mbie.daemonlab.org/
посмотри там
XDE v1.02 -- extended length disassembler
LDE-32 v1.04 -- Length-Disassembler Engine, ~29k
а вообще я повторюсь.. надо вирусные топики рыть.




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

Создано: 27 октября 2016 14:16
· Личное сообщение · #5

VodoleYka

Зомби двиг очень давно тестился он кривой.

Интересно посмотреть описанный двиг Borov'a, но не получилось его найти, никто про него не знает.

-----
vx




Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 27 октября 2016 15:04
· Личное сообщение · #6

а msrem`а двиг пробовали?




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

Создано: 27 октября 2016 15:06
· Личное сообщение · #7

Medsft

Скорее всего да, но это очень древнее и оно всё бажное.

-----
vx





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

Создано: 27 октября 2016 15:19
· Личное сообщение · #8

Mediana? https://sourceforge.net/projects/mediana/




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

Создано: 27 октября 2016 15:29
· Личное сообщение · #9

Archer

Сложный интерфейс и сишка, нету чем собирать. Но это мотор человека с васма, он его долго пилил, так что в целом сомнительный функционал в плане стабильности.

-----
vx





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

Создано: 27 октября 2016 19:39
· Личное сообщение · #10

Я бы мог поделиться своим двигом - он изначально делался с выборкой опкодов для декодирования по известному красно-чёному дереву, метод value_compare класса map перегружен:
Code:
  1. struct MASKED_DWORD
  2. {
  3.          DWORD dwValue;
  4.          DWORD dwMask;
  5. };
  6.  
  7.  
  8. template<class _Ty>
  9.          struct MaskedLess
  10.                  : public binary_function<_Ty, _Ty, bool>
  11.          {
  12.                  bool operator()(const _Ty& _Left, const _Ty& _Right) const
  13.                  {
  14.                         bool bResult;
  15.                         WORD lmw, rmw;
  16.                         lmw = _Left.dwValue;
  17.                         rmw = _Right.dwValue;
  18.  
  19.                         if(_Left.dwMask == (DWORD)-1) lmw &= _Right.dwMask;
  20.                         else if(_Right.dwMask == (DWORD)-1) rmw &= _Left.dwMask;
  21.  
  22.                         bResult = (lmw & 0xFF) < (rmw & 0xFF) ||
  23.                                             (lmw & 0xFF) == (rmw & 0xFF) &&
  24.                                             (lmw & 0xFF00) < (rmw & 0xFF00);
  25.  
  26.                         return bResult;
  27.                  }
  28.          };
  29.  
  30. typedef map<MASKED_DWORD, CMD_PRIMITIVE, MaskedLess<MASKED_DWORD>> MASKED_MAP;


Но Вы, излеченый мой друг, будете охать и ахать, зачем я само декодирование смешал вместе с выводом текста

-----
IZ.RU





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

Создано: 27 октября 2016 19:59
· Личное сообщение · #11

DenCoder

В общем от дизасма нужно следующее(размер данных никакой не даёт, только тяжёлые типо Bea). Он должен определить длину инструкции(и число префиксов желательно, что бы повторный раз их не считать) и наличие адресации - MRM/SIB.

Я потестил dizahex, там тоже не всё ровно, во первых не раскодируется simd. Так же не возвращается число префиксов и не ясно по лимитам на длину инструкции - если она овер 15 байт, то дизасм возвращает абы что. Посему это нужно пофиксить. Так как нужно самому раскодировать MRM/SIB, что бы привести адресацию к линейной(проиндексировать pushad фрейм), то какие то манипуляции дизасмом с ней излишне, нужно только наличие MRM и смещение на неё, а есчо точнее, так как смещение всегда постоянно для 3-х таблиц опкодов, то нужен только факт наличия мрм. В других приложениях наличие мрм определялось по факту выборки данных(ловушка), но тут статик декодирование и посему нужно юзать таблицы опкодов. В принципе можно их просто описать тремя маленькими битмапами, это будет эффективнее всего, но нужно определять длину инструкции всё равно.

-----
vx





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

Создано: 27 октября 2016 20:06
· Личное сообщение · #12

Ну у меня как-то так

difexacaw пишет:
и наличие адресации - MRM/SIB


Code:
  1. //Export
  2. IMAGE_HANDLE __stdcall LoadFileImage(char* sFilePath);
  3. DWORD __stdcall UnloadFileImage(IMAGE_HANDLE ihImage);
  4. IMAGE_HANDLE __stdcall CreateImage(char* sFilePath, BYTE* pMem, DWORD dwFileSize);
  5.  
  6. DWORD __stdcall TestAsciiString(char* s, DWORD iMaxLength = 0x100);
  7. DWORD __stdcall TestUnicodeString(wchar_t* ws, DWORD iMaxLength = 0x100);
  8.  
  9. DWORD __stdcall GetCodeSectionEnd(FILE_IMAGE* pImage, int iNum = 1);
  10. void __stdcall SetCodeSectionEnd(FILE_IMAGE* pImage, DWORD dwSectionEnd, int iNum = 1);
  11. void __stdcall ShiftSections(IMAGE_HANDLE ihImage, IMAGE_SECTION_HEADER* psh, DWORD dwSectionSizeDisp, QWORD dwPageDisp);
  12. DWORD __stdcall CreateNewSection(FILE_IMAGE* pImage);
  13. DWORD __stdcall RequestSizeOfCodeSection(FILE_IMAGE* pImage, DWORD dwSize);
  14. void __stdcall CreateNewPage(FILE_IMAGE* pImage, QWORD dwAddress, DWORD dwSize);
  15. ADDED_PAGE* __stdcall FindPage(FILE_IMAGE* pImage, QWORD dwAddress);
  16.  
  17. DWORD __stdcall GetSectionCharacteristics(FILE_IMAGE* pImage, QWORD dwAddress);
  18. void __stdcall AnalyzeImage(IMAGE_HANDLE ihImage);
  19. DWORD __stdcall AnalyzeBlock(FILE_IMAGE* pImage, QWORD StartAddress, DWORD dwType, void* pObject = NULL);
  20.  
  21. DWORD __stdcall IsAPIFunc(DWORD dwMemAddress, char* sLibName);
  22.  
  23. DWORD __stdcall GetSib(CMD_PRIMITIVE* ppr, INSTRUCTION* pCmd, QWORD dwAddress, SIB32* pSib);
  24. DWORD __stdcall GetImmOperandSize(CMD_PRIMITIVE* ppr, INSTRUCTION* cmd, QWORD dwAddress, int iOperandNum);
  25. bool __stdcall IsPrefixExist(BYTE* Bytes, DWORD dwLen, DWORD Prefix);
  26. BYTE __stdcall GetRex(BYTE* Bytes, DWORD dwLen);
  27. DWORD __stdcall GetRegMask(INSTRUCTION* pCmd, int OperandNum);
  28. void __stdcall SetBlockRegMask(INSTRUCTION_BLOCK* pCmdBlock);
  29. ULONG __stdcall GetChanges(INSTRUCTION* pCmd, BYTE r32);
  30.  
  31. void __stdcall Recalculate(FUNCTION_BLOCK* pFuncBlock, INSTRUCTION_BLOCK* pCmdBlock, DWORD dwDelta);
  32. DWORD __stdcall CalculateAddress(INSTRUCTION_BLOCK* pCmdBlock, DWORD dwReg, VALUE_DESC* pValue, QWORD dwStartAddress);
  33. DWORD __stdcall FindRegAddresses(FUNCTION_BLOCK* pFuncBlock, INSTRUCTION_BLOCK* pCmdBlock, DWORD dwReg, QWORD dwStartAddress = 0);
  34.  
  35. void __stdcall FormatInstruction(QWORD Address, CMD_PRIMITIVE* pr, INSTRUCTION* cmd, char s[0x100]);
  36. int __stdcall FormatSIB(char* s, SIB32* pSib);
  37. int __stdcall FormatPrefix(char* s, INSTRUCTION* pCmd);
  38. int __stdcall FormatPrefix2(char* s, INSTRUCTION* pCmd);


с неограниченным детектом префиксов

-----
IZ.RU





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

Создано: 27 октября 2016 20:09
· Личное сообщение · #13

DenCoder

Опишите плз подробно как там нужный функционал обрабатывается, длина и MRM.

-----
vx




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

Создано: 27 октября 2016 21:22 · Поправил: redlord
· Личное сообщение · #14

intel xed
__https://software.intel.com/protected-download/267266/560870




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

Создано: 27 октября 2016 21:28 · Поправил: difexacaw
· Личное сообщение · #15

redlord

Посмотрю спс(рипнуть из пина ?).

Пока получилось в таком виде.

4f5a_27.10.2016_EXELAB.rU.tgz - Dasm.rar

-----
vx




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

Создано: 28 октября 2016 06:44 · Поправил: dosprog
· Личное сообщение · #16

А вот интересно, с чем связана необходимость такой уж скорости работы, что приходится всякие урезанные примочки использовать?
Или размер? - тоже сомнительно. Полная реализация табличного дизассемблера 16/32 (DOS COM), по опыту, имеет размер 15 килобайт.
Собирался когда-то сделать базонезависимую 32-бит его версию, да так и собираюсь до сих пор.
Алгоритм такого дизасма неплохо реализован в QVIEW.




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

Создано: 28 октября 2016 11:00 · Поправил: difexacaw
· Личное сообщение · #17

dosprog

На раскодировку запилен трассировщик, профайл определяет непосредственно дизасм длин. В идеале хочется достигнуть скорости лишь в несколько раз меньше, чем прямое исполнение, думаю это возможно. Табличная раскодировка в принципе идеальна, но вы можите привести пример её ?
Толку от вашего бинаря нету. Тот же xed известен давно, но его порт под свои задачи весьма сложен, с него dumpbin генерит 50М лога, а на изучение интерфейсов нужно времени не намного меньше, чем на запил своего мотора с нуля.

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

-----
vx




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

Создано: 28 октября 2016 11:12 · Поправил: VodoleY
· Личное сообщение · #18

difexacaw нахрена трассировка.. это ж вообще ад! я вам в очередной раз рекомендую просмотреть тему про вирусню.. там вариаций было немеренно + оптимизированных..
допустим.. чтоб повысить скокрость.. и сократить обьем кода.. народ искал сигнатуры определенных инструкций.. типа call jmp far .. и туда вливался.. полный дизасм длин, так же не так уж много занимает.. (это из серии.. ради одного колоска заводить целый комбаин) посмотрите код старых вирусов.. они в сорцах типа onehalf там достаточно все по феншую делалось. посмотрите как вирус по коду раскидывал куски метаполиморфного кода, в те времена, люди еще заботились о качестве кода
ЗЫ
если у вас задача вливаться в рандомное место кода.. то прийдется строить карту процедур из сегмента кода.. а это уже достаточно сложный анализатор.. ито.. он идеальный не получится

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....





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

Создано: 28 октября 2016 11:17 · Поправил: difexacaw
· Личное сообщение · #19

VodoleY

> я вам в очередной раз рекомендую просмотреть тему про вирусню..

Наверно вы не понимаете кому это советуете

Есть задача и найдено самое эффективное решение. Остались нюансы, требующие оптимизации, как сабж.

-----
vx




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

Создано: 28 октября 2016 11:59 · Поправил: VodoleY
· Личное сообщение · #20

difexacaw задавайте правильные вопросы.. получайте правильные ответы. трассировка необходима ток в одном случае.. если вы хотите разрезельвить прыжки типа call eax.. и опять же... тут решения 2.. либо статическая либо динамическая эмуляция кода.. но подозреваю что вам так глубоко не интересно
ЗЫ я не буду уже углблятся.. в то что уже описано Крисом.. что это можно спец командами проца ловить.. но это уже привязка к железу и архитектуре. Есть метода таких себе хардварных бряков, на уровне проца

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....





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

Создано: 28 октября 2016 17:29 · Поправил: difexacaw
· Личное сообщение · #21

VodoleY

Какие хардверные остановы, я говорю про взятие под быструю отладку всего приложения или его части(процедуры или модуля). К примеру поиск в приложении ссылки на строку или отлов cupid, захват графом части кода етц - это задачи автоматики, dbi. Эмуляция не может дать профайл, только прямое исполнение. Те же к примеру точки останова в таком случае сводятся к установке маркера в кэш инструкций и нотифи при выборке из кэша.
Это активно юзается для множества задач, смотрите пример --> Link <--

-----
vx




Ранг: 12.0 (новичок), 17thx
Активность: 0.060
Статус: Участник

Создано: 28 октября 2016 18:09
· Личное сообщение · #22

difexacaw пишет: Для этого необходимо её пересобрать полностью - описать графом и сбилдеть в буфер.

Как это работает я знаю.
Из скриптов что то стандартное собрать на c\c++ не проблема, собрать asm код\граф тоже не проблема, но проблема собрать драйвер с необходимым функционалом. Долго объснять, в данном случае речь о физической памяти, в общем забейте.

Ps. По поводу дизасма, то самый быстрый вариант это таблицы, быстрее в принципе ничего нет, а если скорости мало, то можно распараллелить в GPU. Выше писали о дизасме на фолтах, сгенерте с помощью него валидные таблицы или возьмете готовые (в сете полно и даже от intel есть), вряд ли вам нужно запихивать двиг в чужое приложение, следовательно плевать сколько памяти сожрут таблицы, в целом задача не отличима от подсчета хешей, табличные варианты быстрее, запилить функцию декодер, там кода на строчек 50-100, ибо готовое либо плюет на скорость или же убого в своей реализации и точности.

Добавлено спустя 2 минуты
VodoleY пишет: задавайте правильные вопросы.. получайте правильные ответы. трассировка необходима ток в одном случае

Да ладно, эмуляция, рекомпиляция, на малвари свет клином не сошелся, большая часть задач работает в обе стороны, ибо защита мало отличима от малвари.

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


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

Создано: 28 октября 2016 18:17 · Поправил: difexacaw
· Личное сообщение · #23

neshta

> проблема собрать драйвер с необходимым функционалом.

Мотор выше не привязан к моду, без разницы кернел или юзер, оберните сехом для безопасного доступа к коду.

> Выше писали о дизасме на фолтах, сгенерте с помощью него валидные таблицы или возьмете готовые

Тот мотор(RLDE) использовал хардверную выборку данных и накопление длины при прекращении срабатывания ловушки. Это тормозной метод(для данной задачи, для статик годится), но он необходим для оценки любого прочего мотора, иначе как тестить ?

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

-----
vx




Ранг: 12.0 (новичок), 17thx
Активность: 0.060
Статус: Участник

Создано: 28 октября 2016 18:35 · Поправил: neshta
· Личное сообщение · #24

difexacaw пишет: Это тормозной метод(для данной задачи, для статик годится), но он необходим для оценки любого прочего мотора, иначе как тестить ?

Я знаю, как это работает, так тестировали еще на древних камнях, то бишь до intel.
Но иначе не собрать валидные таблицы, двиг то используется в своем движке, пох на эти несчастные крохи памяти, важна ведь скорость выполнения, одновременно не бывает хорошо.
Взять например расчет хеша, алго точно так же делятся на память и скорость, одно дело, когда нужно влезть в узкие рамки памяти и совсем другое когда нужно получить скорость чуть ниже аппаратного выполнения.
difexacaw пишет: Мотор выше не привязан к моду

Так он и отсутствует, нет бинарной реализации, а устанавливать wdk для сборки проблематично, ибо в паре мест сломает экосистему, поднимать vm тоже проблематично по некоторым факторам. Собрать буфер и пробросить указатель не проблема, хотя это можно сделать с движка, проблема именно в компиляции, огрызком драйвер не собрать, а огрызок довольно долго патчил под современный компиль, чтобы его ломать, но в тоже время им драйвер не собрать, починю другой комп и уже на нем соберу.

Ps. Здесь проскакивала mediana, неюзабельная, медленная хрень, довелось тестировать. Ко всему прочему автор отказался от поддержки, дескать посоны сурсы есть, разбирайтесь сами. udis86 тоже советовали, избыточен и довольно медленный, вариант llvm и тот лучше, хотя толст.



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

Создано: 29 октября 2016 09:43 · Поправил: VodoleY
· Личное сообщение · #25

difexacaw пишет:
Какие хардверные остановы, я говорю про взятие под быструю отладку всего приложения или его части

это вы наверно не правильно меня поняли.. У Криса есть статья, взлом через покрытие кода. Там как раз рассматривались внутренние хардварные бряки, которые есть у некоторых интелов. можно ставить хардварные бряки на инструкции, которые ломают линейность кода. (call jmp ret jxx). Это самый быстрый способ построения графа кода. Бряки на прерываниях int 3 int 1 жутко тормазные.
PS я вобщем просто хотел упомянуть, что есть такая метода. Но там нужен драйвер. Эти инструкции есть не во всех процах, поэтому эта метода не прижилась. НО быстрее врядли можно будет чтото соорудить. (я про скорость работы) по факту, это наномиты на хардварном уровне

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....





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

Создано: 29 октября 2016 09:55 · Поправил: difexacaw
· Личное сообщение · #26

VodoleY

Нет, вы не понимаете. Любое срабатывание ловушки передаёт управление в ядро, где выполняется предварительна обработка и системные фиксы событий(трап процессинг) и возврат в юзер на диспетчер фолтов, из которого в свою очередь выполняется обратный вызов сервиса(NtContinue) для рестарта, возврата управления. Вся эта цепочка столь медленна, что не юзабельна для полного трейса апликухи, всё виснет.
Само событие переключения мода - передача управления в ядро и обратно, это крайне тяжёлая по профайлу операция, из за трансляций и валидаций(железячные фичи).

> быстрее врядли можно будет чтото соорудить.

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

Добавлено спустя 17 минут
Приведу вам профайл юзаемого ранее трассировщика(динамическая эмуляция, DYE):

За единицу принят тайминг прямого исполнения кода.

Хардверная(TF) трассировка через VEH: замедление в ~140 раз.
Хардверная трассировка без возврата в ядро(без перезагрузки контекста NtContinue): 80.
Динамическа эмуляция(с крайне тормозным ядром): 10.
Под отладочным портом замедление невероятно, это сотни тысяч раз.

Со всеми оптимизациями(дизасм длин, кэш инструкций и прочее) я уверен что можно достичь профайла лишь в несколько раз ниже прямого исполнения, в таком случае это получается совершенное решение, так как замедление работы приложения фактически будет отсутствовать.

Добавлено спустя 13 часов 2 минуты
Потестил xed, он медленее в ~9 раз dizahex'a.

Добавлено спустя 13 часов 19 минут
Семпл.

f947_30.10.2016_EXELAB.rU.tgz - xed.rar

-----
vx




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

Создано: 31 октября 2016 04:16
· Личное сообщение · #27

difexacaw
в чем конкретная кривизна ?

и нет, никакого отношения дила к хиеву не имеет, от слова совсем




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

Создано: 31 октября 2016 04:18 · Поправил: difexacaw
· Личное сообщение · #28

sen

Не проходил тесты на рандом буфере.
Может это не с хьюва дизасм, но на его сайте.
Пока лучше dizahex'a ничего не нашлось.

Добавлено спустя 4 минуты
Есть при тестах один нюанс, инструкция может быть не корректна, такое событие нужно вручную отфильтровать при тестах, но есть иной путь. Можно сгенерить десятки тысяч инструкций автоматикой(системный код) и натравить на них тестируемый мотор.

-----
vx




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

Создано: 01 ноября 2016 04:08
· Личное сообщение · #29

difexacaw
просто пальцем покажи что не так - я исправлю.

| Сообщение посчитали полезным: parfetka, Gideon Vi

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

Создано: 01 ноября 2016 07:18 · Поправил: dosprog
· Личное сообщение · #30

Та он ужэ забыл


difexacaw пишет:
Тогда во первых соберите это норм компилем, ну что бы не было пустых пространств и прочего треша.


) Слышишь, чудик, хорош уже глупости городить. Ты где там "пустые пространства" увидел, а?
)) Какой нахер "нормальный конпиль" - ты чо вообще
) Оно бы и хер бы с твоими глупостями, если б ты при этом на других людей языком лязгать не пытался.

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


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

Создано: 01 ноября 2016 18:38
· Личное сообщение · #31

sen

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

-----
vx



<< . 1 . 2 . 3 . 4 . >>
 eXeL@B —› Софт, инструменты —› Дизасм.
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати