eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
обновлён 2 декабря!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: bartolomeo (+4 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

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

Ранг: 40.9 (посетитель)
Статус: Участник

Создано: 1 марта 2016 10:01 · Поправил: FalseMaster New!
Цитата · Личное сообщение · #1

Некоторое время назад открыл для себя ручную распаковку исполняемых файлов. В процессе ковыряния столкнулся с тем, что некоторые пакеры заменяют адреса API'шек в IAT на переходники, и в этом случае приходится соответствующим образом редактировать файл, создаваемый тулзой "Import Reconstructor". Восстановление так называемых подсказок для загрузчика показалось мне зело муторным занятием, и после нескольких распаковок я не выдержал и накатал прожку, делающую это автоматически. Вот сцыль, может кому пригодится.

Ранг: 409.4 (мудрец)
Статус: Участник

Создано: 22 апреля 2017 17:29 New!
Цитата · Личное сообщение · #2

difexacaw пишет:
Да, он не понимает смысл. Запуск в вм для него это нечто иное, чем прямой запуск. Не смотря на то, что это не перестаёт быть синей консолью и досом.

) Чуваг. Ты не понимаеш смысл. Досом там и не пахло, на тех скриншотах.

Ранг: 0.0 (гость)
Статус: Участник

Создано: 22 апреля 2017 17:57 New!
Цитата · Личное сообщение · #3

dosprog пишет: Я это к тому, что в делфи теперь можно использовать кириллицу в именах переменных?
Как-то неожиданно.


Code:
  1. def напечатать(строка):
  2.     print(строка)
  3.          
  4. ретроград = u'первый раз увидел юникод'
  5. напечатать(ретроград)


Это есть во всех языках которые поддерживают юникод, в дельфях поддержка появилась с 2009 версии. Проснулся.

Ранг: 15.5 (новичок)
Статус: Участник

Создано: 22 апреля 2017 20:51 New!
Цитата · Личное сообщение · #4

dosprogdosprog пишет:
А с синим окном то FAR, тоже WIN32.


far если что можно запустить из-под доса, раньше знал и для вас специально загуглил
https://forum.farmanager.com/viewtopic.php?t=10598

Ранг: 409.4 (мудрец)
Статус: Участник

Создано: 22 апреля 2017 20:56 · Поправил: dosprog New!
Цитата · Личное сообщение · #5

То же самое относится и к упомянутому здесь TASM5.4.
Нужна эмуляция WINAPI.

А FAR когда-то на его заре, действительно, запускали в DOS'е, но смысла в том было мало.

shellstorm пишет:
Проснулся.


) Ну всё теперь. Жызнь изменится в сторону



Ранг: 316.3 (мудрец)
Статус: Участник

Создано: 22 апреля 2017 21:02 New!
Цитата · Личное сообщение · #6

dosprog

Спасибо за обьяснение, старик

Ранг: 40.9 (посетитель)
Статус: Участник

Создано: 24 апреля 2017 03:50 New!
Цитата · Личное сообщение · #7

dosprog
>Нужна эмуляция WINAPI.

Как ты видел на пикче, мне таки удалось запустить TAsm в DOS Box'е. Но я не совсем удовлетворён результатом, т.к. сколько ни пытался завести хароновский DOSWin32, так нифига и не получилось, посему покамест оставил стаб под HX DOS Extender за авторством Japheth'а. Не знаешь случайно, может какие нюансы есть при использовании DOSWin32? Уж больно прельщает этот эмуль своим минимализмом (состоит всего из одного файла).

Ранг: 409.4 (мудрец)
Статус: Участник

Создано: 24 апреля 2017 06:19 · Поправил: dosprog New!
Цитата · Личное сообщение · #8

FalseMaster пишет:
какие нюансы есть при использовании DOSWin32


Нет, не подскажу.

FalseMaster пишет:
таки удалось запустить TAsm в DOS Box'е


А в чём там было дело?

..а вообще он нормально и просто в Windows запускается.
С DOS'ом да, имелся отсутствующий импорт.

Ранг: 40.9 (посетитель)
Статус: Участник

Создано: 24 апреля 2017 09:28 · Поправил: FalseMaster New!
Цитата · Личное сообщение · #9

>Нет, не подскажу.
Ну вот, а ещё dosprog

>А в чём там было дело?
Ты сам ответил на свой вопрос, цит.: "имелся отсутствующий импорт". А отсутствовал он из-за очень древнего эмуля-экстендера, который я пока заменил на этот.

>..а вообще он нормально и просто в Windows запускается.
Дык я как бы и не собирался под голым досом кодить. Просто раз уж влез по уши в TAsm'овые потроха, так почему бы заодно и не вернуть ему утраченный функционал, хоть он и нахрен не нужен?

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


Ранг: 27.8 (посетитель)
Статус: Участник

Создано: 25 апреля 2017 23:24 New!
Цитата · Личное сообщение · #10

difexacaw
>>Ух ты, это же дос. Синяя консоль

да, в одном стиле с турбодубагерами...


хотя пришлось сотворить аццкий хек чтоб интерактивно дизасеммблирующий, дубагер
(на базе VCL-шной срани), насадился на Terminal, да ^^

ps
FalseMaster, не знаю как FAR, но помницо, лет эток десять назад, семерочный DCC32, запускался через HX DOS Extender, в дос-боксе (в варианте с консольным отладчиком ), и компелировал.. ужоснаховый хеллов по переходу в защищщоный режим.. и обратно... да...

Ранг: 40.9 (посетитель)
Статус: Участник

Создано: 26 апреля 2017 05:21 New!
Цитата · Личное сообщение · #11

>семерочный DCC32, запускался через HX DOS Extender
Ничего удивительного в свете того, что поддержка DCC из 7-ых делфей заявлена в доках сего эмуля.

microxa, а у тебя как с TAsm'ом?

Ранг: 27.8 (посетитель)
Статус: Участник

Создано: 26 апреля 2017 06:27 New!
Цитата · Личное сообщение · #12

FalseMaster, ну как с тасмом.. пересобирал 2 метра tasm.asm (version 5.3), через DCC32, пытался фиксить нехватку памяти на здоровых сорцах (с иды вестимо), поскольку себя он сгребает на вжик вжик..

Но чето, так и никак... А такто, под иду заточен он больше всего, и быстрый..

Не знаю конечно, как дела с версией 5.4+ мож даже ввели поддержку XMM/SSE..

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

Ранг: 40.9 (посетитель)
Статус: Участник

Создано: 26 апреля 2017 07:30 New!
Цитата · Личное сообщение · #13

>Не знаю конечно, как дела с версией 5.4+ мож даже ввели поддержку XMM/SSE..
Теоретически можно (прокручивал в голове реализацию), но вот беда, ленность моя не знает границ, да и производительность упадёт из за двойного парсинга. Я к чему веду-то, не мог бы ты выкроить время для вот этого, а то dosprog похоже соскочил?

Ранг: 27.8 (посетитель)
Статус: Участник

Создано: 26 апреля 2017 19:39 New!
Цитата · Личное сообщение · #14

FalseMaster, эээм.. чото я опять понял юмора, кроме как в тесте
патчей под спешал кастомном диалект... На что как не программист а скорей
пересборщик скажу - о ноу факинг ноу, к томуже факинг
эмбракадабро.. понимаете это уже никуя не тру 5.4+, особенно на данный
момент, когда уже нах ниче не надо..

Скажу так, tasm32 писан на тасме, верятно с большой кучей 16битного кодеса
поэтому кроме как копурайтов в нем нихрена ничего к лучшему не менялось..

Но tasm32, он хорош как минимум до 1 метра сорса..

Проект пересборки таки откопал на файлопомойке:
И вспомнилась трабла (с граблями и вилами): тасм32 он себя мож и сгребал
токо обжи, уже были каличные с попутаными фиксапами или х его знает чего
в этом мраковом OMF формате. Поэтому если и собирался, на спец версии Jwasm
(весьма тормозной, для такой реверс инженегрии)...

Справедливости ради отмечу, что 2.5метра сорца этого тасма,
винтажная версия ML.exe
[code]
A:\TEMP>ml.exe -c -Zm -omf !tasm32.asm
Microsoft (R) Macro Assembler Version 6.15.8803
Copyright (C) Microsoft Corp 1981-2000. All rights reserved.

Assembling: !tasm32.asm
[/code]
(дружащая с SSE2 выхлопом IntelC++ v8.0 Build 20031211Z),
сгребла за 1секунду (на задохлом недобуке!) уделав тасмовский двиг
как минимум в 2 раза.. после практически мгновенной обработки волшебной
утилитой OMF2D без проблем скормлена DCC32 ...

Так что актуальней пересобрать или его или OMF2D, в качестве подсадного
link.exe, для постобработки.

Ранг: 40.9 (посетитель)
Статус: Участник

Создано: 27 апреля 2017 00:50 · Поправил: FalseMaster New!
Цитата · Личное сообщение · #15

microxa

>я опять понял юмора, кроме как в тесте патчей
Да никакого юмора, к кому мне ещё обращаться, как не к вымирающим олдфагам? Но на нет, как говорится, и суда нет.

>под спешал кастомном диалект
Не спешал и не кастомный, а современный диалект, принятый в FASM, NASM, BASM и даже кривом WASM.

>это уже никуя не тру 5.4+, особенно на данный момент
Тру не тру, а в обеспечение function level linking на данный момент могёт только MASM через , причём годится этот метод только в связке с мелкомягким же линкером, и "+" версия TASM'а.

>поэтому кроме как копурайтов в нем нихрена ничего к лучшему не менялось
5.3 от 5.0 сильно отличается, 5.3 = 5.4 (только оффсеты данных изменились).

>уделав тасмовский двиг как минимум в 2 раза
ИМХО, дело не в двиге, ну или не только в двиге. Код TASM'а целиком и полностью состоит из нарушений рекомендаций Intel по оптимизации (как будто назло делали), а именно повсеместно натыкан префикс размера операнда (66h), который в определённых случаях (загрузка непосредственного 16-битного значения в половинку регистра или память) сбивает работу декодера – из своего опыта: всего из-за одной такой инструкции в теле цикла нагрузка на проц взлетала на 8-12% (Pentium M, "кора" более терпимо относится к говнокоду – всего 3-4%), алсо сплошь и рядом чтение целого регистра после изменения его части, команды, реализованные в микрокоде (типа JCXZ)… Короче, всё что можно было сделать для замедления выполнения, было сделано в полной мере. В принципе кое-где можно попатчить, но это песец как нудно.

>OMF2D, в качестве подсадного link.exe, для постобработки.
Не люблю лишних движений. По мне так нажать две кнопки (TASM -> DCC) рациональней чем три (MASM -> OMF2D -> DCC) с учётом того, что делать это порой приходится очень часто (например, когда экспериментируешь параллельно с основным проектом), да и доверия у меня нет ко всяким OMF конвертерам (формат действительно мутный и описание вменяемое отсутствует). А с TASM'овым выхлопом ни разу ещё проблем не было (родной формат как-никак) – DCC проходится по объектнику перед внедрением его в DCU'шку (чего-то там меняет) и если что не так, шлёт лесом.

Ранг: 409.4 (мудрец)
Статус: Участник

Создано: 27 апреля 2017 02:05 · Поправил: dosprog New!
Цитата · Личное сообщение · #16

FalseMaster пишет:
а то dosprog похоже соскочил?

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

Программа не развивается уже двадцать лет и имеет фундаментальные ограничения. Сорсов нет, нормальных.
Так-то в начале 2000-х тоже пытался мудрить, тогда ещё с SOURCER'ом и с DISA..

Просто нет желания остаток эизни, сколько там ещё её осталось, возиться с этой затеей.
Этого никто не оценит, и ничего оно не добавит.

А фирме-правообладателю лучше было бы подготовить сорсы TASM'а к публикации и выложить на обозрение, это могло бы повлиять на дальнейшее

microxa пишет:
Но tasm32, он хорош как минимум до 1 метра сорса..

Раздельная трансляция, дальше сборка из кучи obj-файлов.
Поэтому и написал, что без внятных сорсов то просто дурацкая затея.

FalseMaster пишет:
(как будто назло делали)

Не назло, а портировали из 16-битной версии. Это нормально.


Ранг: 40.9 (посетитель)
Статус: Участник

Создано: 27 апреля 2017 02:45 · Поправил: FalseMaster New!
Цитата · Личное сообщение · #17

dosprog

>…это не есть гуд.
А судьи кто? ©

>что нельзя реализовать с помощью макро - не реализуется вообще.
Предрассудки.

>Про нехватку памяти вон тут в прошлом посте писали уже.
Так надо не писать, а принимать меры.

>А фирме-правообладателю лучше было бы…
Фирме-правообладателю глубоко насрать, если ты не заметил. Чудо, что они паскалевый-то компилятор хоть немного допилили.

>Не назло, а портировали из 16-битной версии. Это нормально.
Портировать – более чем нормально. Гнать при этом халтуру – не думаю.

Ранг: 409.4 (мудрец)
Статус: Участник

Создано: 27 апреля 2017 02:54 · Поправил: dosprog New!
Цитата · Личное сообщение · #18

FalseMaster пишет:
А судьи кто? ©


А есть вообще примеры подобных затей?
Я не знаю.

FalseMaster пишет:
Гнать при этом халтуру – не думаю.

) Ну, пройдись по сорсам размером свыше 2 Мб текста, меняя всюду <AX> на <EAX>. И т.п.
А потом самое интересное - чтобы оно ещё и работало. С этим будут вполне объяснимые проблемы.

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


FalseMaster пишет:
Фирме-правообладателю глубоко насрать, если ты не заметил.

) Ну, а мне ещё глубже, чем фирме-правообладателю, если честно..

Хочется уже какого-то единообразия - MASM в этом плане нормально подходит.
Кастомные трансляторы это не гуд, однозначно.
Кстати, в самом TASM'е директива .MASM тому первое подтверждение.

.. Просто Delphi мне не надо, не буду с ним возиться.
А для остального шо TASM, шо не-TASM - всё едино.

Впрочем, если бы мну был нанят для такой затеи,
то за пяток лет возни с TASM'ом можно было бы и разобраться кое-в-чём..
- Но цена вопроса? И кто её заплатит?
Я вот сейчас вообще с программированием никак не связан, по работе,
- и времени на ней у меня просто нет, задумываться о всяких парадоксах.
)) Работа как в той поговорке - "бери мячь - и пизьдячь"

Кое-что, бывает, пописываю, по мелочам, в выходные, - а так..


Ранг: 27.8 (посетитель)
Статус: Участник

Создано: 27 апреля 2017 03:28 · Поправил: microxa New!
Цитата · Личное сообщение · #19

посоны сморите какой крякми:

весьма достойной версии (что входила в пакет
свободного компилера),
Code:
  1. а:\!files>ml.exe
  2. Microsoft (R) Macro Assembler Version 7.10.3077
  3. Copyright (C) Microsoft Corporation.  All rights reserved.


и под которую есть отладочные символы.

Так что надо будет подумать.. как захучить по мелочи
OMF врайтер.. чтоб это... DCC32 не плевался...

dosprog >>А где можно на них взглянуть?
эмм..
IDA их получает через либу
C:\Program Files\Common Files\Microsoft Shared\VC\msdia80.dll
и затем распаковывает во временную директорию
у меня оно
A:\Temp\ida\ml.pdb
так что гдето там оно... да...

Ранг: 409.4 (мудрец)
Статус: Участник

Создано: 27 апреля 2017 03:33 New!
Цитата · Личное сообщение · #20

microxa пишет:
и под которую есть отладочные символы.

А где можно на них взглянуть?


Ранг: 40.9 (посетитель)
Статус: Участник

Создано: 27 апреля 2017 03:37 · Поправил: FalseMaster New!
Цитата · Личное сообщение · #21

>А есть вообще примеры подобных затей?
А это что-то меняет?

>…меняя всюду <AX> на <EAX>.
>…тем более если написано на себе самом
Уверен, что TASM на себе самом написан? Судя по внутренностям и дате первого релиза, на Turbo C, т.е. перегнать под MSVC не так уж трудоёмко, было бы желание.

>Ну, а мне ещё глубже
Какая безответственность

>за пяток лет возни с TASM'ом можно было бы и разобраться кое-в-чём
За такой период, ежели сильно постараться, можно 5 штук своих асмов накропать.

Ранг: 409.4 (мудрец)
Статус: Участник

Создано: 27 апреля 2017 03:52 · Поправил: dosprog New!
Цитата · Личное сообщение · #22

FalseMaster пишет:
Уверен, что TASM на себе самом написан? Судя по внутренностям и дате первого релиза, на Turbo C, т.е. перегнать под MSVC не так уж трудоёмко, было бы желание.

Вполне уверен.
На нём же и сам TurboC делался.
Хотя и даты различаются, TASM 1.0 вроде как на год младше.

Вот есть такая программка - TurboEditAsm,(c)SPEEDWARE, 1985 --> Link <--

«Турбо Editasm» разработан Юрайа Барнеттом от Speedware Inc (Сакраменто, Калифорния) между 1984 и 1987.
Позже был продан фирме Borland, у которой получил название "Турбо Ассемблер".


FalseMaster пишет:
За такой период, ежели сильно постараться, можно 5 штук своих асмов накропать.

Своих да,
Но речь шла о разборе TASM32.
Чтобы качественно, как тебе хотелось.


Ранг: 40.9 (посетитель)
Статус: Участник

Создано: 27 апреля 2017 04:06 · Поправил: FalseMaster New!
Цитата · Личное сообщение · #23

dosprog

>Вполне уверен.
А я вот не вполне, но ничего не утверждаю, если чо. Разница между первыми релизами – 2 года в пользу Turbo C. Плюс очень необычный способ возврата результата у функций – через флаг переноса. Вручную не уследишь.

>Но речь шла о разборе TASM32.
>Чтобы качественно, как тебе хотелось.
Мне хотелось только чтобы кто-нибудь потестил мои "инновации" и больше ничего. Пересобрать бинарь TASM'а я и сам могу, но считаю это нецелесообразным и времяубийственным, проще с нуля написать.

Ранг: 409.4 (мудрец)
Статус: Участник

Создано: 27 апреля 2017 04:11 · Поправил: dosprog New!
Цитата · Личное сообщение · #24

FalseMaster пишет:
А я вот не вполне

) Ну, а я вполне. Взгляни на TeASM от 1985-го года. ТурбоС тогда ещё и в проекте не существовало.

FalseMaster пишет:
2 года в пользу Turbo C.

.a.. 97876 31-Oct-1988 1:00 TASM.EXE
.a.. 169098 6-Jul-1987 1:00 TCC.EXE


Ранг: 40.9 (посетитель)
Статус: Участник

Создано: 27 апреля 2017 05:05 · Поправил: FalseMaster New!
Цитата · Личное сообщение · #25

dosprog

>Взгляни на TeASM от 1985-го года.
То что некая контора приобрела некий сорец у некоего лица, не говорит ни о чём. Проект асма мог быть отложен по коммерческим соображениям либо оба проекта могли развиваться параллельно и ступенчато: на асме пишется недоC, затем на смеси недоC и асма альфа C и так далее, пока исходники не позволят выпустить продукты, которые будет не стыдно продать и легко поддерживать/багфиксить. Как бы там ни было, чтобы что-то достоверно знать, надо делать запрос разработчику.

>ТурбоС тогда ещё и в проекте не существовало.
Зато существовал Turbo Pascal – 1983, видимо написанный вилами на воде.

>.a.. 97876 31-Oct-1988 1:00 TASM.EXE
>.a.. 169098 6-Jul-1987 1:00 TCC.EXE
Turbo C – 1987.
Turbo Assembler – 1989.

Ранг: 409.4 (мудрец)
Статус: Участник

Создано: 27 апреля 2017 05:38 · Поправил: dosprog New!
Цитата · Личное сообщение · #26

FalseMaster пишет:
Turbo Assembler – 1989.

При чём тут педивикия?
Вот сам --> TASM 1.0 <--

--Добавлено--
А вот --> TurboC 1.0 <--

По ТурбоПаскалю не скажу ничего, факт остаётся фактом - для SR/M да, 1983.

В любом случае, Борланд в своих разработках "плясала" от ASM'а, поэтому и получались быстрые, компактные и функциональные программы.
В отличие от Микрософт.
Помню, делал честную попытку перейти с ТурбоС 2.0 на MS QuickC - так время компиляции одного и того же различалось буквально впятеро, а оно и однократно было немало - дело происходило на 80386-м компьютере с медленным жёстким диском, классическим, на 10 Мб.
Так что на тот момент выбор прочно остался за ТурбоС. Но не навсегда, WIN32 многое изменила

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


Ранг: 40.9 (посетитель)
Статус: Участник

Создано: 27 апреля 2017 08:05 · Поправил: FalseMaster New!
Цитата · Личное сообщение · #27

>Вот сам…
>А вот…
dosprog, что с тобой сегодня такое? Это же дата создания файла на диске, завязанная на системное время конкретной машины и хранящаяся в FAT. Временная метка (IMAGE_FILE_HEADER.TimeDateStamp), появилась только в PE формате. Почти все имеющиеся у меня исполняемые файлы изначально имели левую дату (с разницей от пары секунд до нескольких лет), пришлось даже состряпать утиль, восстанавливающую оригинальное время, чтобы проще было следить за версиями. Ты бы хоть обратил внимание, что все файлы в архиве имеют одно и тоже время создания с точностью до секунды.

>То на годы работы короче.
Да почему на годы-то? Вот тут выше microxa сетовал на ограничение по размеру сорца. Там скорее всего и надо-то несколько байт поправить. Ладно я не специалист по этому вашему реверсу, но на 146% уверен, что старожилам этого портала полдня (а то и меньше) хватит на устранение "недоразумения". Просто никому не надо, гораздо прикольней кидаться какашками в тех, кто юзает не пользующийся популярностью софт.

Ранг: 27.8 (посетитель)
Статус: Участник

Создано: 27 апреля 2017 21:25 · Поправил: microxa New!
Цитата · Личное сообщение · #28

>>Пересобрать бинарь TASM'а я и сам могу, но считаю
>>это нецелесообразным и времяубийственным, проще с нуля написать.

Собственно его пересбор по сложности как хелловорлд...

Старый прожект я посчитал не труЪ, так как еще юзалась не помню какая IDA,
плюс фиг знает, чего там патчилось, поэтому чисто ради фана
(и в целях обрященья Истены), был произведен декомпил заново траханого:

>>Turbo Assembler Version 5.3 Copyright (c) 1988, 2000 Inprise Corporation

То что это дерьмо писано на тасме указывает факт отсутствия RTL, что
довольно облегчает задачу обратной сборки..

Ну существенных косяков, за ida6.1, было немного поправились ручками минут
за пятадцать, далее некоторые правки редактором FAR.

Короч фигня делов, и в результате файл !tasm.asm на 2.3 с копейками метра.

Теперь самое интересное - сборка, в которой приняли участие

Tasm V5.3,
MASM v7.10.3077
JWasm v2.11a,

Новую OBJ сборку Tasm5.3-его, DCC32 (Version 15.0) не одобрил:
Error: Bad object file format: 'A:\build\!tasm32.obj'
Это дело поправил OMF4D, уже без заявления о
OMF2D: Invalid input file, invalid record or internal limits exceeded!

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

Сборку JWasm, обрабатывать не пришлось, но результ тот же -
Ехсешка не рабочая...

Рабочая (и вполне себе компилябиющая) оказалась только у MASM,
(+постобработка OMF4D)

вобщем хз... учитывая такие кодовые навороты как:

Code:
  1. push     word ptr [esi+8]
  2. mov      ax, [esi+0Eh]
  3. mov      edx, [esi+0Ah]
  4. call     sub_4044B2
  5. pop      cx

так что.. такой вот хелов.. в доме полного глюк и приведений...

зы
1ая проблема с тасмом решилась путем ундефайнов align
2ая общая проблема Tasm/Jwasm решилась какимто непостижимым хеком

Code:
  1. ;DATA segment para public 'DATA' use32
  2. ; assume cs:DATA
  3. ;DATA segment dword public 'DATA' use32
  4. .data       ;org 420000h
  5.                 dd 2 dup(0) ; HOLLY FUCKING BLACK MAGIK!!!1
  6.  
  7. byte_420000       db 0            ; DATA XREF: sub_40117C+14
  8.                                    ; sub_4011A0+6


вобщем надо подумать, о предложении dosprog, насчет... 32-битизации кода...

FalseMaster ребилд версии 5.4 занял 10минут, посему хинт:



первым делом после деконопляции, выходим на копурайт, чуть выше будет порнуха с офсетами:
Code:
  1. DATA:004286FE                 dd offset loc_41CD3D, offset loc_41CD5A, 0, 0, (offset algn_41FF62+29E2009Eh)
  2. DATA:004286FE                 dd (offset algn_41FF62+29E22AC2h), (offset algn_41FF62+4C2009Fh)
  3. DATA:004286FE                 dd (offset algn_41FF62+421055F2h), (offset algn_41FF62+531141EDh)
  4. DATA:004286FE                 dd (offset algn_41FF62+4C004DE3h), (offset algn_41FF62+2DBE52E3h)
  5. DATA:004286FE                 dd (offset algn_41FF62+0B53DFh), (offset algn_41FF62+4EEC00C8h)

унехплорим 004286FE буковкой "U", и восстанавливаем офсеты буковкой "O", затем ищем еще
Code:
  1. DATA:004219B6                 dd (offset algn_41FF62+51C7009Eh)


После чего в DATA ищем align (alt+T), и делаем на них буковкой "U"..

Напоследок ищем по коду nullsub и разворачиваем их.

далее оутпутим !tasm32.asm, и редактируем вот заумную хуйню про сегменты, более простым и главное
DCC32 совместимым обьявлением:

Code:
  1. .code ;CODE segment para public 'CODE' use32
  2. .data ;DATA segment para public 'DATA' use32


далее фиксим немного косяков с обьявами:
Code:
  1. ; Imports from kernel32.dll
  2. ;
  3. ; BOOL __stdcall CloseHandle(HANDLE hObject)
  4.                 ;extrn __imp_CloseHandle:dword ; DATA XREF: CloseHandle
  5.                 extrn CloseHandle:proc


после чего коноплим в OBJ... и пишем такое вот дельфе приложение
Code:
  1. {$apptype console}
  2. program tasm32; uses windows;
  3.  
  4.  
  5. {$!tasm32.OBJ}
  6. procedure RtlUnwind; external 'kernel32.dll';
  7. procedure start; external;
  8.  
  9. begin
  10.    start();
  11. end.


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


а это.. чтоб познать толк в прелестях MASM
(в режиме 5.1совместимости -Zm)
+OMF4D & DCC32

подправить
Code:
  1. _WIN32_FIND_DATAA struc    ; (sizeof=0x140, standard type)
  2. dwFileAttributes dd ?
  3. ftCreationTime    dd 2 dup(?);FILETIME ?
  4. ftLastAccessTime dd 2 dup(?);FILETIME ?
  5. ftLastWriteTime   dd 2 dup(?);FILETIME ?
  6. nFileSizeHigh     dd ?


ну и по мелочи удалить small ( да и ds: , чтоб глаза не мозолили)
Code:
  1. push     small word ptr [esi+8]
  2. push     word_42A61E; push small [ds:word_42A61E]



ппц

ндээ... а познавать таки придется, поскольку на попытки перекинуть внешний функционал


Code:
  1.                  extrn sub_401032:proc
  2.                  extrn sub_40106B:proc
  3.                  extrn byte_42A7C7:byte


эта погань обрушивает глюкву в виде


Code:
  1. A:\build>xtasm /ml/m2/kh8192 !tasm32.asm 
  2. Turbo Assembler  Version 5.3  Copyright (c) 1988, 2000 Inprise Corporation
  3.  
  4. Assembling file:   !tasm32.asm
  5. **Error** !tasm32.asm(84) Relative jump out of range by 05D6h bytes
  6. **Error** !tasm32.asm(106) Relative jump out of range by 05E3h bytes
  7. **Error** !tasm32.asm(108) Relative jump out of range by 05D2h bytes
  8. **Error** !tasm32.asm(121) Relative jump out of range by 05DDh bytes
  9. **Error** !tasm32.asm(143) Relative jump out of range by 05FBh bytes
  10. **Error** !tasm32.asm(159) Relative jump out of range by 05D8h bytes
  11. **Error** !tasm32.asm(202) Relative jump out of range by 05E4h bytes
  12. **Error** !tasm32.asm(226) Relative jump out of range by 05E7h bytes
  13. **Error** !tasm32.asm(243) Relative jump out of range by 05FAh bytes


в то время как MASM всё делает чотко...
ой всё... ипал я этот глюкавый тасм...

вот масм7.1 суко.. действительно одна из немногих хороших вещей от негрософт..
тем более с символами..
пересобрать однозначно.. и не просто суко пересобрать а заглотать суко обж
семерошным дельфом, и закостылизировать все сишные функи и это..
и на FastMM сделать там всё... да.. подумаешь 4метра сорца.. хуйня какая. зато
понятно всё.. как открытая книга..

Ранг: 409.4 (мудрец)
Статус: Участник

Создано: 27 апреля 2017 23:02 · Поправил: dosprog New!
Цитата · Личное сообщение · #29

FalseMaster пишет:
Это же дата создания файла на диске, завязанная на системное время конкретной машины и хранящаяся в FAT. Временная метка (IMAGE_FILE_HEADER.TimeDateStamp), появилась только в PE формате.


Не в FAT она хранится, дата и время файла, а в файле-каталоге. Ну да ладно.

Не путай эту дату с той датой, которая сохранена в виде атрибута файла в оригинальных дистрибутивах. А именно на них ссылки я и выложил.
Если этого не достаточно, то можно запустить сам TASM 1.0 - он пишет о себе дату выпуска 1988 год.


microxa пишет:
... ипал я этот глюкавый тасм...

) чтоб не ипать, в TASM'е есть директива .JUMPS

microxa пишет:
вот масм7.1 суко.. действительно одна из немногих хороших вещей от негрософт..
тем более с символами..

А где можно на него взглянуть, если не секрет?

FalseMaster пишет:
Но даже если предположить, что ты угадал

А что там предполагать - в те былые времена файлы в дистрибутив клались чаще всего с верно установленными атрибутами даты, для истории. Часто ещё время файла обозначало номер версии, как это было с продуктами Борланда.
Они следили за этим. Кстати, у них есть и специальная утилита TOUCH, она теоретически нужна для использования с MAKE, но заодно удобно позволяет перемаркировать все файлы в каталоге текущей датой.


Ранг: 40.9 (посетитель)
Статус: Участник

Создано: 28 апреля 2017 05:26 · Поправил: FalseMaster New!
Цитата · Личное сообщение · #30

microxa

>Собственно его пересбор по сложности как хелловорлд…
Я имел в виду не просто тупую пересборку, а с сопутствующей модификацией, иначе нахуа? Теперь почему я не горю желанием в это впрягаться, хотя идея весьма заманчива:
1) 32-битизация таит в себе очень большие подводные камни. Поменять AX на EAX etc – это верхушка айсберга, т.к. придётся скурпулёзно просматривать весь 2-метровый код на предмет хранения двух 16-битных значений в 32-битном регистре посредством сдвигов последнего на 16 бит (заменяя например "mov r16, m16" на "movzx r32, word m16" мы рискуем затереть где-то использующееся старшее слово), также заипёшсо разруливать ситуации с обращением к данным на стёке по базе в EBP/ESP после замены "push r16" на "push r32".
2) Избавление от инлайн-патча потребует частичного реверса двига, что для меня вообще задача непосильная.
Вышеописанные моменты меня очень сильно пугают и отбивают всякое желание влезать в такой лютый блудняк.

>То что это дерьмо писано на тасме указывает факт отсутствия RTL
В те мохнатые годы ещё не было RTL'ов в современном понимании.

>вобщем хз… учитывая такие кодовые навороты как
Ммм, а в чём наворот-то?

>ребилд версии 5.4 занял 10минут
Можешь кинуть полный выхлоп (неправленный) IDA'ы (с TASM 5.4), а то у мну её нет? Так, чисто пофтыкать.

dosprog

Это всё косвенные улики. В оригинальных дистрибах 32-битных версий время не совпадает. В том же DCC32.exe дата в копирайтах, выводимых на консоль, на год отличается от указанной в VERSIONINFO. Но даже если предположить, что ты угадал, куда девать разницу в 1 год? Так что пока вопрос остаётся открытым.

Ранг: 27.8 (посетитель)
Статус: Участник

Создано: 28 апреля 2017 15:11 · Поправил: microxa New!
Цитата · Личное сообщение · #31

ну чо посоны.. встречаем реконпайлинг
4.7метра идеально чистого рипа !ML.ASM
отодраного от RTL и торчащего EXTRN чисто на сишные функи..
отладочная инфа инклюдед...

Tasm32 снесло крышу уже на
Code:
  1. *Warning* !ml.asm(65478) Segment alignment not strict enough
  2. *Warning* !ml.asm(65518) Segment alignment not strict enough
  3. ...и понеслась
  4. **Error** !ml.asm(3) Relative jump out of range by 028Bh bytes
  5. **Error** !ml.asm(14) Relative jump out of range by 026Fh bytes
  6. *Warning* !ml.asm(32) Segment alignment not strict enough
  7. **Error** !ml.asm(45) Relative jump out of range by 027Eh bytes

dosprog это называецо говну снесло крышу. шо никакие ни джампсы ни
хуямпсы тут не помогут... так что нечего тут советовать...


MASM пересобрал его за 2секунды, Jwasm за почти двадцать...

На попытку линковки что OMF что COFF обжей
Code:
  1. C:\xz>link !ml.obj
  2. Microsoft (R) Incremental Linker Version 6.00.8168
  3. Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
  4.  
  5. MASM>!ml.obj : fatal error LNK1190: invalid fixup found, type 0x0002
  6. JWASM>
  7. C:\xz>jwasm //Zm /Cp !ml.asm
  8. JWasm v2.11a, Aug 21 2014, Masm-compatible assembler.
  9. Portions Copyright (c) 1992-2002 Sybase, Inc. All Rights Reserved.
  10. Source code is available under the Sybase Open Watcom Public License.
  11.  
  12. !ml.asm: 276621 lines, 36 passes, 7110 ms, 0 warnings, 0 errors
  13.  
  14. C:\xz>link !ml.obj
  15. Microsoft (R) Incremental Linker Version 6.00.8168
  16. Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
  17.  
  18. !ml.obj : fatal error LNK1190: invalid fixup found, type 0x0001
  19.  


улыбаемсо и машем блядь!!1

пробовоны версии убервинтажного
Microsoft (R) Macro Assembler Version 6.11d
Copyright (C) Microsoft Corp 1981-1995. All rights reserved.
(с еще непострипаными релоками, следствии чего собиралось ядро
HX-DOS в голом досбоксе)
а также имеющийся на сайте обдолбаных негров
ml.exe
Microsoft (R) Macro Assembler Version 8.00.50727.104
Copyright (C) Microsoft Corporation. All rights reserved.

которого пришлось отвязать от манифеста на msvcr80.dll
и переделать на msvcr90-ую (у меня от такого FarCry2 лучше работал)

кстати отладочных символов под этот масм нету..

результат всё тотже - облом еггорыч хуйцовский...
фиксапы попутаны млять..
фак ю всех IT ниггеров
да..

>FalseMaster
>>В те мохнатые годы ещё не было RTL'ов в современном понимании.
еще как были,

например у этого реликтового DCC32, был BCC++ 4.5 рантайм
Code:
  1. C:\Delphi7\project\DOSX>dcc32x.exe
  2. Delphi for Win32  Version 8.0  Copyright (c) 1994 Borland International
  3.  
  4. Syntax: DCC32 [options] filename [options]
  5.  
  6.   -A<unit>=<alias> = Set unit alias   -= Generate .obj file
  7.   -= Build all units                -K<addr> = Set image base addr
  8.   -CC = Console target                -= Make modified units
  9.   -CG = GUI target                    -O<paths> = Object directories
  10.   -D<syms> = Define conditionals      -= look for 8.3 file names also
  11.   -E<path> = EXE output directory     -= Quiet compile
  12.   -F<offset> = Find error             -R<paths> = Resource directories
  13.   -GD = Detailed map file             -U<paths> = Unit directories
  14.   -GP = Map file with publics         -= Debug information in EXE
  15.   -GS = Map file with segments        -= Output warning messages
  16.   -= Output hint messages           -$<dir> = Compiler directive
  17.   -I<paths> = Include directories
  18. Compiler switches: -$<letter><state> (defaults are shown below)
  19.   A+  Aligned record fields           O+  Optimization
  20.   B-  Full boolean Evaluation         P+  Open string params
  21.   D+  Debug information               Q-  Integer overflow checking
  22.   I+  I/O checking                    R-  Range checking
  23.   H+  Use long strings by default     V+  Strict var-strings
  24.   K-  Generate stack frames           X+  Extended syntax
  25.   L+  Local debug symbols             Y-  Symbol reference info
  26.   M-  Runtime type info               Z1  Minimum size of enum types
  27. Stack size: -$M<stack> (default 16384)

тогда RTL был маленький, и стартовал с WDOSX экстендером, и коноплил ядро защищенки в досбоксе аж с двумя метрами памяти...
<< . 1 . 2 . 3 . 4 . 5 . 6 . >>
 eXeL@B —› Софт, инструменты —› Восстановление hints после распаковки

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS