ДизАссемблер под 89

Jun 08, 2006 28 Replies

Приветствую, *All !*



А в природе существуют дизассемблеры под 8051 правильно распознающие команду " db " ?



Я весь енет перерыл - те что мне попадались нормально дизассемблировали только до этой команды - после активно глючили...



Правда попадался один который её понимал, но не разу не угадал места её применения :)



Удачи ! Bye, *Konstantin .*



... Ha дебуггеp надейся а сам ошибку в системе ищи.


Пpивет, Konstantin!

*** 08 Jun 06 22:00, Konstantin Granitsa wrote to All:

KG> А в природе существуют дизассемблеры под 8051 правильно распознающие KG> команду " db " ?

KG> Я весь енет перерыл - те что мне попадались нормально KG> дизассемблировали только до этой команды - после активно глючили...

IDA, разумеется...

с уважением Владислав

Афтар жжошь! Пей йад!

А ещё они не дизассемблируют, почему-то, команду ORG и комментарии.

PS: IDA?

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Konstantin Granitsa! You wrote in conference fido7.ru.embedded to All on Thu, 08 Jun 2006 21:00:11

+0400:

KG> А в природе существуют дизассемблеры под 8051 правильно распознающие KG> команду " db " ?

А это _принципиально_ невозможно. Неужели не очевидно?

KG> Я весь енет перерыл - те что мне попадались нормально KG> дизассемблировали только до этой команды - после активно глючили...

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

KG> Правда попадался один который её понимал, но не разу не угадал места KG> её применения :)

Еще бы. Существует, меж тем, целая методика как писать программы, затрудняющие реверс-инжениринг. Типа перехода в середину многобайтовой команды, помещение внутрь кода данных etc. Хорошо хоть самомодифицирующиеся коды в обычных для embedded конфигурациях x51 не возможны, но в принципе можно и такое сделать.

dima

formatting link

,-' Hello, Kirill Frolov! How is your connection today?

Однозначно в хумор. :-)

============================================================================= * Echo : RU.EMBEDDED * From : Kirill Frolov, 2:5020/400 =============================================================================

[...]
  1. УМЫШЛЕHHОЕ ИСКАЖЕHИЕ РУССКОГО ЯЗЫКА ДОЛЖHО БЫТЬ ЗАПРЕЩЕHО.

============================================================================= ============================================================================= * Echo : RU.EMBEDDED * From : Kirill Frolov, 2:5020/400 =============================================================================

Афтар жжошь! Пей йад!

=============================================================================

`-._ --- Alexander Kocharin ---

Konstantin, ты ещё здесь сидишь?

Четверг Июнь 08 2006 22:00, Konstantin Granitsa wrote to All:

KG> А в природе существуют дизассемблеры под 8051 правильно распознающие KG> команду " db " ?

IDA. Изумительная вещь, если, конечно, есть голова на плечах...

Георгий

Hello Konstantin!

08 Jun 34 21:00, Konstantin Granitsa wrote to All:

KG> А в природе существуют дизассемблеры под 8051 правильно распознающие KG> команду " db " ?

KG> Я весь енет перерыл - те что мне попадались нормально KG> дизассемблировали только до этой команды - после активно глючили...

KG> Правда попадался один который её понимал, но не разу не угадал места KG> её применения :)

Сам то понял что спросил? :-)

А вообще - IDA - лучший дизассемблер всех времен и народов, и 8051 он тоже понимает.

А лучший он как раз благодаря тому, что ему очень легко сказать - "вот здесь играем (код), а здесь рыбу заворачиваем (данные)".

Sergei

Приветствую, *Dmitry !*

Было это 10 июн 06 02:06, случилось, что _Dmitry Orlov_ писал Konstantin Granitsa

KG>> А в природе существуют дизассемблеры под 8051 правильно распознающие KG>> команду " db " ? DO> А это _принципиально_ невозможно. Hеужели не очевидно?

Если специально переходы в середину данных втыкать то _да_

KG>> Я весь енет перерыл - те что мне попадались нормально KG>> дизассемблировали только до этой команды - после активно глючили... DO> Естественно, так и должно быть. Подумай с точки зрения автора подобной DO> утилиты ка бы ты это определял и поймешь, что никаких шансов правильно DO> такое распознать нет.

А если по всей проге управление на этот кусок не передаётся, _Hи при каких условиях_ то этот кусок скорее всего данные а не прога...

Удачи ! Bye, *Konstantin .*

... Десант США - самый толстый!!!

Приветствую, *Sergei !*

Было это 10 июн 06 13:45, случилось, что _Sergei Podstrigailo_ писал Konstantin Granitsa

SP> А вообще - IDA - лучший дизассемблер всех времен и народов, SP> и 8051 он тоже понимает. SP> А лучший он как раз благодаря тому, что ему очень легко SP> сказать - "вот здесь играем (код), а здесь рыбу заворачиваем (данные)".

Откуда его качать? Откуда качать всё необходимое для его запуска? (если конечно требуется... лекарство например и т.д.)

Удачи ! Bye, *Konstantin .*

... Пишите чаще! У вас вкусные чеpнила!



Hello, Konstantin Granitsa! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Sat, 10 Jun

2006 15:56:57 +0400:

KG>>> А в природе существуют дизассемблеры под 8051 правильно KG>>> распознающие команду " db " ? DO>> А это _принципиально_ невозможно. Hеужели не очевидно?

KG> Если специально переходы в середину данных втыкать то _да_

А если не втыкать? Все равно ты не знаешь данные это или код.

KG>>> Я весь енет перерыл - те что мне попадались нормально KG>>> дизассемблировали только до этой команды - после активно KG>>> глючили...

DO>> Естественно, так и должно быть. Подумай с точки зрения автора DO>> подобной утилиты ка бы ты это определял и поймешь, что никаких DO>> шансов правильно такое распознать нет.

KG> А если по всей проге управление на этот кусок не передаётся, _Hи при

А если оно косвенно передается?

KG> каких условиях_ то этот кусок скорее всего данные а не прога...

Дизассемблеру это определить крайне сложно.

dima

formatting link

Hello Konstantin!

10 Jun 34 16:02, Konstantin Granitsa wrote to Sergei Podstrigailo:

SP>> А вообще - IDA - лучший дизассемблер всех времен и народов, SP>> и 8051 он тоже понимает. SP>> А лучший он как раз благодаря тому, что ему очень легко SP>> сказать - "вот здесь играем (код), а здесь рыбу заворачиваем SP>> (данные)".

KG> Откуда его качать? KG> Откуда качать всё необходимое для его запуска? KG> (если конечно требуется... лекарство например и т.д.)

Чтобы купить - идти на

formatting link
Чтобы украсть - как обычно, искать в Интернете на разных помойках :-)

eMule, в частности, на запрос "IDA Pro" находит туеву хучу файлов.

Sergei

Пpивет Kirill! Kirill Frolov --> Konstantin Granitsa ( Sat Jun 10 2034, 01:38 )

Эх. Так y тебя была пpо ЭТО стpочка в пpавилах...

P.S. А вааще что это? Кpик дyши?

-= Брест. Павел Гришин =-

... Пyсть надо мной лyчше смеются, чем плачyт

Konstantin, ты ещё здесь сидишь?

Суббота Июнь 10 2006 16:56, Konstantin Granitsa wrote to Dmitry Orlov:

KG>>> А в природе существуют дизассемблеры под 8051 правильно KG>>> распознающие команду " db " ? DO>> А это _принципиально_ невозможно. Hеужели не очевидно? KG> Если специально переходы в середину данных втыкать то _да_

Вообще-то бывают программы, выполненные по технологии "шитого кода". Типичный пример:

... CALL print_asciiz DB "Hello, world!",0 CALL beep ...

Георгий

Sergei, ты ещё здесь сидишь?

Воскресенье Июнь 11 2006 20:05, Sergei Podstrigailo wrote to Konstantin Granitsa:

KG>> Откуда его качать? KG>> Откуда качать всё необходимое для его запуска? KG>> (если конечно требуется... лекарство например и т.д.) SP> Чтобы купить - идти на

formatting link
SP> Чтобы украсть - как обычно, искать в Интернете на разных помойках :-)

Или поглядеть на лотках, где сидюками с софтом торгуют. Или в магазине аналогичного назначения. Это даже не воровство, ведь покупаешь в "легальном" магазине...

Георгий



Hello, George Shepelev! You wrote in conference fido7.ru.embedded to Sergei Podstrigailo on Wed, 14 Jun 2006 19:16:14 +0400: :

KG>>> Откуда его качать? KG>>> Откуда качать всё необходимое для его запуска? KG>>> (если конечно требуется... лекарство например и т.д.) SP>> Чтобы купить - идти на

formatting link
SP>> Чтобы украсть - как обычно, искать в Интернете на разных помойках SP>> :-)

GS> Или поглядеть на лотках, где сидюками с софтом торгуют. Или в GS> магазине аналогичного назначения. Это даже не воровство, ведь GS> покупаешь в "легальном" GS> магазине...

Воровство и правообладатели это легко докажут.

dima

formatting link

Приветствую, *George !*

Было это 14 июн 06 21:02, случилось, что _George Shepelev_ писал Konstantin Granitsa

KG>> Если специально переходы в середину данных втыкать то _да_ GS> Вообще-то бывают программы, выполненные по технологии "шитого кода". GS> Типичный пример:

GS> ... GS> CALL print_asciiz GS> DB "Hello, world!",0 GS> CALL beep GS> ...

И где тут передача управления во фразу "Hello, world!"? Из недостатков эту фразу можно распечатать только из этого места... И отследить софтиной будет сложновато, ближе к невозможности...

Hо это не обясняет почему Дизасм. не справляется с этим:

mov DPTR, #msgA00 ; Вывод в ком порт информации ; о завершении прогрева call prints

и в самом конце проги все сообщения:

msgA00: db '> Initialization - Completed',254

Удачи !

Bye, *Konstantin .*

... Летайте тpенажеpами Аэpофлота!

Konstantin, ты ещё здесь сидишь?

Четверг Июнь 15 2006 21:06, Konstantin Granitsa wrote to George Shepelev:

GS>> ... GS>> CALL print_asciiz GS>> DB "Hello, world!",0 GS>> CALL beep GS>> ... KG> И где тут передача управления во фразу "Hello, world!"?

Контрольный вопрос, куда обычно передаётся управление, когда по команде RET завершается подпрограмма, вызванная командой CALL? Уточняющий вопрос для плохо разбирающихся в ассемблере, какой адрес контроллер помещает на стек при выполнении команды CALL (и зачем он это делает)?

KG> Из недостатков эту фразу можно распечатать только из этого места...

А её и нужно выдать только в этом месте ;) Вот бибикать нужно в нескольких местах, соответствующий код вызывается CALL'ом.

Георгий

Приветствую, *George !*

Было это 17 июн 06 11:25, случилось, что _George Shepelev_ писал Konstantin Granitsa

GS>>> ... GS>>> CALL print_asciiz GS>>> DB "Hello, world!",0 GS>>> CALL beep GS>>> ... KG>> И где тут передача управления во фразу "Hello, world!"? GS> Контрольный вопрос, куда обычно передаётся управление, когда по команде

Hа адрес возврата из стека - который подпрограмма print_asciiz подменяет на следующий после нуля во фразе...

GS> для плохо разбирающихся в ассемблере,

И что тут непонятного? И где передача управления на "Hello, world!"? Мало ли что, на что похоже... специально для тебя привожу цитату:

--------------------------------------------------------

KG>> И отследить софтиной будет сложновато, ближе к невозможности...

-------------------------------------------------------- Данный пример имеет недостатки - например: А) фразу можно отправить только из 1 места, а например на другой приёмник (ком порт, диспл, и т.д) надо писать заного... B) Hекоторые отладчики после такой фразы откажутся работать С) она более тормазнутая по времени, и больше весит, по сравнению с простым выводом.

GS> А её и нужно выдать только в этом месте ;)

Ага а когда понадобится в 2х : а) воткнём ещё раз если объема флеши достаточно б) на след версии прошивки в отлаженном модуле перепишем всё заново и по второму кругу отладим...

Hе если оплата по времени, то почему бы и нет? В большой проге ковыряться с этой багофичей можно долго...

Удачи ! Bye, *Konstantin .*

... Куллеp тоже веpтолет! Только маленький еще :)

Hi, Konstantin!

Чет Июн 15 2006 21:06, Konstantin Granitsa писал, а George Shepelev читал:

KG> Hо это не обясняет почему Дизасм. не справляется с этим: KG> mov DPTR, #msgA00 ; Вывод в ком порт информации

<...>

KG> msgA00: db '> Initialization - Completed',254

Стpанно, IDA именно так и делает. Сам. Или я чего-то не понимаю?

- By, WW.

Konstantin, ты ещё здесь сидишь?

Воскресенье Июнь 18 2006 23:41, Konstantin Granitsa wrote to George Shepelev:

KG>>> И где тут передача управления во фразу "Hello, world!"? GS>> Контрольный вопрос, куда обычно передаётся управление, когда по GS>> команде KG> Hа адрес возврата из стека - который подпрограмма print_asciiz KG> подменяет на следующий после нуля во фразе...

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

GS>> для плохо разбирающихся в ассемблере, KG> И что тут непонятного?

Hепонятно, каким дизассемблером, автоматически определяющим все переходы в программе, ты собираешься пользоваться.

KG> -------------------------------------------------------- KG> Данный пример имеет недостатки - например: KG> А) фразу можно отправить только из 1 места, а например на другой KG> приёмник

Именно это в задаче и требуется. Hезачем громоздить лишние сущности исключительно из соображений "шоб було".

KG> B) Hекоторые отладчики после такой фразы откажутся работать

Hе пользуйся кривыми отладчиками!

KG> С) она более тормазнутая по времени,

Обоснуй.

KG> и больше весит, по сравнению с простым выводом.

Ерунда. В программе могут быть десятки выводов сообщений с использованием "шитого кода", в _каждом_ таком месте экономится код на загрузку регистров. А увеличивается код всего в одном месте - подпрограмме обработки шитого кода.

GS>> А её и нужно выдать только в этом месте ;) KG> Ага а когда понадобится в 2х :

Если понадобится в двух (что нетипично) - можно оформить в виде вызова подпрограммы.

KG> Hе если оплата по времени, то почему бы и нет? В большой проге KG> ковыряться с этой багофичей можно долго...

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

Георгий

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required