Как узнать код программы?
> Как узнать на чем она написана
Иногда это невозможно.
> и можно ли посмотреть ее код?
Нет.
---
Ибо нефиг.
сказали что нужен PEid.
Сначала надо узнать чем прога упакована ---> юзаеш PEid(КАК ИМ ПОЛЬЗОВАТЬСЯ?)
Потом ищешь соответствующий распаковщик и юзаеш его
---
"Истина всегда конкретна."
прога по физике.мне нужно узнать как расчитывается одна формула...так как с моей теорией не сходиться(
лучше сначала Розенталя проштудируй - рано тебе еще в физику соваться
не любил эту книгу
заметно
> мне нужно узнать как расчитывается одна формула
Наиболее разумный подход --- подумать, как оно могло быть посчитано,
выдвинуть несколько лучших гипотез, проверить их. Если ни одна не
подходит, перепроверить свой результат.
Можно попробовать восстановить алгоритм по результатам
дизассемблирования или трассировки, но это для сильных
духом. Кроме того, оно требует некоторых знаний.
---
"Человек полетит, опираясь не на силу своих мышц,
а на силу своего разума."
Как узнать на чем она написана и можно ли посмотреть ее код?код посмотреть можно, но ассемблерный.
для анализа ассемблерного кода удобнее всего IDA.
---
"Не надо читать много книг."
Совсем не факт.
---
...Я работаю антинаучным аферистом...
значит можно восстановить текст программы?
Машинного, но в чуть более человеческой нотации, чем ряды цифр.
> значит можно восстановить текст программы?
Нет.
---
...Я работаю антинаучным аферистом...
а я хз - я не читал
всем спасибо
я бы воспользовался программкой un-pack, последняя версия 2.3, кажется
выдает порядочное количество инфы о файлах вообще, а особенно об исполняемых
Ну PE это и досовский формат, кроме того не уверен, что автор отличает дос программу и консольное приложение и вообще с чего вы взяли что там что-то запаковано?
Вопрос ко всем: вдруг, автор треда собрался ревёрсить нечто типа матлаба?
к автору: выложи чтоли экзешник, народ глянет - может что и подскажет
Для DOS я помню отладчик TDD (есть в комплекте borland с/pascal но есть и более модные отладчики.
2 :
Не пойму, к чему такая категоричность. Для некоторых компиляторов C сейчас есть годные декомпиляторы. Хотя это не тот самый код, да.
Ну в общем то да, но вначале PE может жить досовкая программа =)
я тут слышал, в одном файле с PE и MZ может и эльф поселиться.
А как волшебные числа проверяются?
хуже если там тролль поселится
Чтобы вопрошающий не пудрил себе мозг, а искал более
продуктивные подходы. Или ты считаешь восстановление
алгоритма простой задачей?
> Для некоторых компиляторов C сейчас есть годные декомпиляторы.
> Хотя это не тот самый код, да.
Кому он нужен? Мы какую задачу решаем?
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."
согласен.
> Или ты считаешь восстановление
> алгоритма простой задачей?
Нет.
> Кому он нужен? Мы какую задачу решаем?
Я имел ввиду, что для досовских прог, наверное, можно найти похожие инструменты, но с такими вопросами обращаться лучше к тем, кто более знаком с предметной областью.
если прога под DOS то турбо дебаггер в помощь и еще WinHex-HiEW. но в комплект понадобится кто-то знающий ассемблер, потому как если возникают такие вопросы то очевидно что автор треда сам код посмотреть-поправить не сможет.
чтобы посмотреть как реализована какая-то формула в конкретной старинной программе под DOS без всяких защит совершенно не обязательно реверсить файл целиком или трассировать до того места где формула реализована. гораздо эффективнее посмотреть разные хитрые константы (из формулы, примерный вид которой вероятно должен быть известен автору треда) типа float-double и по ним как по сигнатурам найти интересующую часть, TD для этого достаточно. задача на вечер имхо.
Да тут и ida справится, там хоть красиво в виде графа все будет. Если глаз наметан, так и положение формулы мгновенно вычисляется )
у меня IDA отказалась DOS-прогу отлаживать помнится когда я что-то такое делал, я в TD ушел =)
а ida он халявный?
там вроде есть вариант бесплатного использования ограниченной версии типа не больше часа или двух работы и без возможности сохранения результата.
> (из формулы, примерный вид которой вероятно должен быть
> известен автору треда) типа float-double и по ним как по
> сигнатурам найти интересующую часть, TD для этого достаточно.
> задача на вечер имхо.
Не знаю, на чём основано твоё "имхо," но оно неверно.
Некоторые функции могут быть приближены многочленами или прочей ерундой,
константы тут не помогут. Они могут немного отличаться от того, что ты видел,
нужно модель знать.
---
"Математик может говорить, что ему хочется,
но физик должен, хотя бы в какой-то мере, быть в здравом рассудке."
Вот если глаз не намётан, а так оно и есть, то "мгновенно" даже
в самом грубом приближении не получится.
---
"Математик может говорить, что ему хочется,
но физик должен, хотя бы в какой-то мере, быть в здравом рассудке."
чем бы там они не были приближены, множество плавающих констант там будет с вероятностью 99%. даже если это будут константы вида 1.0, 2.0, 0.5 их все равно можно будет увидеть легко и при этом не спутать с целочисленными. если это приближение многочленами то тем более там будет дофига и больше небольших целых или полуцелых констант
если это приближение многочленами то тем более там будет дофига и больше небольших целых или полуцелых константВ физике?
даже у сферического коня в вакууме найдется парочка полуцелых констант
Ну. увидишь ты, что они где-то используются,
Это поможет тебе опознать операции с плавающей запятой?
Так ты и так их можешь опознать.
А теперь вопрос на засыпку.
Допустим, что программа была написана на фортране.
Что делать собираешься?
---
...Я работаю антинаучным аферистом...
не забывай, что у нас древняя досовская прога, которая весит отсилы 500 кб и в ней не так все и страшно будет. а начем она писалась вообще пофиг. это исполняемый файл в машинном коде. единственно если это язык с интерпретатором встроенным в экзешник, тогда да, ппц. но такой случай - все же экзотика.
> блокнотом, а шестнадцатеричным редакотором, и потом результаты
> поиска в дизассемблере или отладчике использовать чтобы найти
> ссылки на эти данные. что тут еще непонятного?
Вот и объясни, как ты собираешься искать эти постоянные, если
они получаются с помощью операций "fld1" или "fild".
> не забывай, что у нас древняя досовская прога, которая весит
> отсилы 500 кб и в ней не так все и страшно будет.
На чём основана твоя уверенность? На незнании действительности?
Вот это, например, наглая ложь:
> а начем она писалась вообще пофиг.
Не пофиг. Ты не ответил на вопрос про фортран.
---
"Narrowness of experience leads to narrowness of imagination."
Не пофиг. Ты не ответил на вопрос про фортран.а че там такого страшного в фортране?
он в какой-то другой ассемблер компилируется?
он наверно про форт хотел сказать) а фортран действительно компилится как миленький
> он в какой-то другой ассемблер компилируется?
Представь себе, да. Но приплюснутым насильникам этого неизвестно.
---
"Narrowness of experience leads to narrowness of imagination."
Сходи, что ли, прочитай про реализацию чисел с плавающей запятой.
---
"Narrowness of experience leads to narrowness of imagination."
я примерно представляю как они реализованы. и благодарение прогрессу, на дворе 21 век и не нужно лично копаться в битах, благо нормальный хекс-редактор сам проинтерпретирует в файле с любой позиции все известные ему форматы целых, плавающих чисел, всевозможных дат и всего чего угодно. если ты намекаешь на что-то конкретное, уж поделись своим тайным знанием, а то только и делаешь, что заявляешь что все написанное - наглая ложь, очень, надо сказать удобная позиция. я вот тоже могу сказать, что знаю кое-что о жидомасонском заговоре, однако никому не скажу - что именно.
Ну-ну. И как?
> благо нормальный хекс-редактор сам проинтерпретирует в файле с
> любой позиции все известные ему форматы целых, плавающих чисел
"Известные ему." Назови мне такой редактор, который умеет
интерпретировать фортрановские числа с плавающей запятой.
> если ты намекаешь на что-то конкретное, уж поделись своим
> тайным знанием
Никакого тайного знания здесь нет. Всякий инженер или физик
должен знать, что существует фортран. Если бы ты работал с
фортраном хоть раз, ты бы знал, что его числа с плавающей
запятой отличаются от изобретённых IEEE.
---
"Narrowness of experience leads to narrowness of imagination."
ты имеешь в виду 6-битные вещественные числа что ли, real, которые поддерживаются только программно?
От -1e+16 до +1е+16.
---
...Я работаю антинаучным аферистом...
и чего в них такого страшного? их и паскаль использует, который турбо. и WinHex их прекрасно понимает. и IDA в комментариях умеет генерить соответстующие названия функций к прерыванию, обрабатывающему эти числа. я-то думал, там мегаКОНТРАвские секретные числа из 91.73 бита каждое, разработанные в лаборатории 3 рейха для расчетов нацисткой атомной бомбы, а там боянище всем известное.
Да ничего, они просто не укладываются в твой подход к восстановлению алгоритма.
---
"Narrowness of experience leads to narrowness of imagination."
очень даже укладываются. константы винхексом искать буду, поочередно расставляя галочку в доступные 4 положения для float, real, double, extended соответственно.
Есть несколько причин, и фортрановское представление чисел
не является ни единственной, ни главной.
Если тебе хочется попробовать силы, я могу откопать какой-нибудь
старый проект, который работал под MS DOS, и прислать тебе бинарник.
---
"Мы диалектику учили не по Гегелю.
Бряцанием боёв она врывалась в стих..."
---
"Мы диалектику учили не по Гегелю.
Бряцанием боёв она врывалась в стих..."
я ж не сказал использовать ТОЛЬКО хекс-редактор. турбо дебаггер тоже отладчик. а подобные вещи я делал, правда там числа были аппаратные и константы точно в доках были прописаны, так что не переживай, я не с потолка это утверждаю - про один вечер. естественно, что универсального способа нет, но вероятность стечения всех неблагоприятных факторов исчезающе мала.
даже exe-шника не видели, а уже всё решили
это примерно то же самое, что планировать абстрактную драку
— ща выйду на ринг, помашу кулаками
— не получится ничего - представь что там Майк Тайсон!
— а у меня BFG где-то валялся
— а вдруг у него неуязвимость!
...
ну итд
конечно, занятно услышать все ужасы того, что может иногда произойти в реальной жизни, но часто ведь просто везёт!
а некоторые как раз неуязвимость выдумывают.
с фортрановскими компиляторами. Например, от Watcom.
---
"Narrowness of experience leads to narrowness of imagination."
Любому человеку с ненулевым опытом видно, что ты не общалсяи чем полученный код будет отличаться от какого-нибудь borland pascal-я?
с фортрановскими компиляторами. Например, от Watcom.
больше оптимизаций?
или чего?
ну первое что можно сказать - прога упакована PKLite-ом.
И написана на бэйсике. И содержит байткод, который можно восстановить почти до исходника.
MS QuickBasic 4.x
А я еще и фотографию голой жены автора там нашел.
у тебя нет доказательств, а у меня - есть
А я еще и фотографию голой жены автора там нашел.Жаль только 16 цветов и 640х350.
да, есть такое.
просто в таких делах совсем не понимаю.Буду благодарен, если поясните как код восстановить.
в данном случае не совсем байт-код, но вполне достаточная информация для восстановления по нему исходника. Только имена переменных потеряются, ну так а чего ты хотел после пропуска через exepack/pklite? Пытайся по внешнему виду смысл восстановить, чо.
Байт-код или байтко́д (англ. byte-code иногда также используется термин псевдоко́д — машинно-независимый код низкого уровня, генерируемый транслятором и исполняемый интерпретатором. Большинство инструкций байт-кода эквивалентны одной или нескольким командам ассемблера. Трансляция в байт-код занимает промежуточное положение между компиляцией в машинный код и интерпретацией.
Байт-код называется так, потому что длина каждого кода операции — один байт, но длина кода команды различна. Каждая инструкция представляет собой однобайтовый код операции от 0 до 255, за которым следуют такие параметры, как регистры или адреса памяти. Это в типичном случае, но спецификация байт-кода значительно различается в языке.
Программа на байт-коде обычно выполняется интерпретатором байт-кода (обычно он называется виртуальной машиной, поскольку подобен компьютеру). Преимущество — в портируемости, т. е. один и тот же байт-код может исполняться на разных платформах и архитектурах. То же самое преимущество дают интерпретируемые языки. Однако, поскольку байт-код обычно менее абстрактный, более компактный и более «компьютерный» чем исходный код, эффективность байт-кода обычно выше чем чистая интерпретация исходного кода, предназначенного для правки человеком. По этой причине многие современные интерпретируемые языки на самом деле транслируют в байт-код и запускают интерпретатор байт-кода. К таким языкам относятся Perl, PHP и Python. Программы на Java обычно передаются на целевую машину в виде байт-кода, который перед исполнением транслируется в машинный код «на лету» — с помощью JIT-компиляции. В стандарте открытых загрузчиков Open Firmware фирмы Sun Microsystems байт код представляет операторы языка Forth.
В то же время возможно создание процессоров, для которых данный байт-код является непосредственно машинным кодом (такие процессоры существуют, например, для Java и Forth).
Также некоторый интерес представляет p-код (p-code который похож на байт-код, но физически может быть менее лаконичным и сильно варьироваться по длине инструкции. Он работает на очень высоком уровне, например «напечатать строку» или «очистить экран». P-код повсеместно используется в СУБД и некоторых реализациях BASIC и Паскаля.
я думаю, что реверсить байт-код - задача в этом случае неподъёмная. потому что готовых средств нет, а нужно иметь кое-какие навыки, чтобы его восстановить.
потому что готовых средств нет,я года два назад натыкался на нечто относительно вменяемое. т.е. оно переводило байт-код в читабельные операторы (существовала ещё и платная версия его, которая делала вменяемый код (типа условий-циклов но я её не нашел). думаю, найти формулу в этих операторах будет не так уж и сложно. но лично мне сейчас времени нет помочь, так что как-то сами)
распакованный вариант залейте, плиз
- это со снятым exepack'ом
больше там вроде ничего нет, по крайней мере не детектится
а как вы распаковывали? какими тулзами?
\ws>Un-pack.exe impsolg.exe
-─┼-─ UN-PACK Loader v.1.0 (C) 2002-2003 by Snow Panther [UG2003] -─┼-─
-─┼-─ UN-PACK (File Analyzer and Unpacker) v.2.3 freeware (C) 1998-2003 -─┼-─
-─┼-─ Authors: Snow Panther [UG2003] and many others (see unpack-a.com) -─┼-─
* IMPSOLG.EXE is DOS executable file (MZ EXE)
* Created 06.10.2008 at 18:42:34. Attribute Archive
* File size 62907 bytes
* Identificator...........: MZ
* Bytes on last page......: $01BB (443)
* All pages in file.......: $007B (123)
* Relocations.............: $0001 (1)
* Paragraphs in header....: $0008 (8)
* Minimum memory..........: $0A48 (2632)
* Maximum memory..........: $FFFF (65535)
* SS:SP...................: $0F5C:$0200
* Checksum................: $0000 (0)
* CS:IP...................: $FFF0:$0100
* Relocation table adress.: $0052 (82)
* Overlay number..........: 0
* Entry point.............: $00000080 (128)
* PKLITE v.1.20 by PKWARE Inc.
* Please wait...unpacked!
* PKLite archive file
* Executable file extension
* Trust me, I know what I'm doing...
\ws>Un-pack.exe UNPACKED.exe
-─┼-─ UN-PACK Loader v.1.0 (C) 2002-2003 by Snow Panther [UG2003] -─┼-─
-─┼-─ UN-PACK (File Analyzer and Unpacker) v.2.3 freeware (C) 1998-2003 -─┼-─
-─┼-─ Authors: Snow Panther [UG2003] and many others (see unpack-a.com) -─┼-─
* UNPACKED.EXE is DOS executable file (MZ EXE)
* Created 05.05.2009 at 17:14:24. Attribute Archive
* File size 100346 bytes
* Identificator...........: MZ
* Bytes on last page......: $01FA (506)
* All pages in file.......: $00C4 (196)
* Relocations.............: $0000 (0)
* Paragraphs in header....: $0020 (32)
* Minimum memory..........: $0141 (321)
* Maximum memory..........: $FFFF (65535)
* SS:SP...................: $192C:$0080
* Checksum................: $0000 (0)
* CS:IP...................: $1763:$0010
* Relocation table adress.: $001E (30)
* Overlay number..........: 0
* Entry point.............: $00017840 (96320)
* EXEPACK v.3.69
* Executable file extension
* Trust me, I know what I'm doing...
L:\ws>exeunpak.exe unpacked.exe stage3.exeдальше un-pack ничего не говорит о компрессорах, еще три доверенных сканнера - тоже; логично предположить что ничего там больше и нету
UnPack v1.10a (c) Copyright Tenth Planet Software Intl., C Turvey 1992-1996.
All rights reserved. Non-Commercial use only.
unpacked.exe (hex) (dec)
.EXE size (bytes) 187FA 100346
Minimum load size (bytes) 19A0A 104970
Overlay number 0 0
Initial CS:IP 1763:0010
Initial SS:SP 192C:0080
Minimum allocation (para) 141 321
Maximum allocation (para) FFFF 65535
Header size (para) 20 32
Relocation table offset 1E 30
Relocation entries 0 0
* Uses second generation decompression software.
Packed EXE file.
Unpacking .EXE file ...
Unpacked to Length (bytes) 182F0 99056
stage4.exe (hex) (dec)
.EXE size (bytes) 1A0F0 106736
Minimum load size (bytes) 19A10 104976
Overlay number 0 0
Initial CS:IP 124B:0D2E
Initial SS:SP 182F:0800
Minimum allocation (para) 172 370
Maximum allocation (para) FFFF 65535
Header size (para) 1E0 480
Relocation table offset 1E 30
Relocation entries 73C 1852
Writing .EXE file ...
единственно, в этом случае он ничего не выдал о компиляторе - обычно выдает - но там как бы и так понятно
Ну как бы я знаю, чем это можно взять, но у меня нет времени это делать самому, а передать инструмент я не имею права. Могу дать совет, как это надо делать, но у нашей команды ушло два года на то, чтобы инструмент довести до ума (и это при известной технологии анализа).
Ваша команда два года делала декомпилятор 4-го кубасика? А зачем?
У нас более общее решение. Нам пофиг, какой там байткод.
Насколько пофиг? Если я ща придумаю свой, покатит?
Если в итоге получается работающий бинарник, то да.
Оставить комментарий
nata965
Есть программа, exe-файл под DOS.Как узнать на чем она написана и можно ли посмотреть ее код?