как увидать код распаковщика?

Тема в разделе "WASM.BEGINNERS", создана пользователем babandr, 6 ноя 2005.

  1. babandr

    babandr New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2005
    Сообщения:
    29
    Адрес:
    Voronesh
    Начало запакованной программы Ида распознает как:

    seg000:00401000 start proc near

    seg000:00401000 push offset unk_60F001

    seg000:00401005 call nullsub_1

    seg000:0040100A retn



    , где call nullsub_1- это



    :0040100B nullsub_1 proc near

    0040100B retn

    0040100B nullsub_1 endp Очень идиотский код, на мой взгляд.



    Я не нашел ничего лучше, чем поменять атрибут секции с С0000040 на E0000020 - это вроде делает секцию исполняемой. Повторно дизассемблировал Идой - та же, блин, картина!!! Внимание ,вопрос: как заставить иду (или другой дизасмер) показать код распаковщика? ведь если он выполняется, то он должен БЫТЬ, но пока ида кажет мне только вышеприведенный код ; все остальное пространство экзешника забито, по её мнению, данными.
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    babandr

    Без знания ассемблера в распаковку соваться нечего.



    push offset unk_60F001 - занесение в стек адреса, на который осуществляется переход по seg000:0040100A retn.





    Глупости. Попробуй скормить ехе wdasm'у, может, он тебе больше понравится. Но лучше всего сначала изучи асм.
     
  3. _staier

    _staier New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2003
    Сообщения:
    738
    Адрес:
    Ukraine
    IDA это interactive disassempler

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



    ну и всегда можно в отладчике посмотреть ка и что выполняется . если что неясно
     
  4. babandr

    babandr New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2005
    Сообщения:
    29
    Адрес:
    Voronesh
    никто меня не понял...:dntknw:

    вопрос в следующем - если в упакованной проге есть предварительная распаковывающая часть, и часть эта есть КОД (опознаваемый системным загрузчиком), то ПОЧЕМУ??? этот код не видит дизассемблер? или он смотрит только на характеристики секции и исходя из них решает - код эта секция или данные? Если так, то - святая простота!!!



    а тот код, что ида показывает -ну не нонсенс ли?вызов пустой функции и только
     
  5. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    Забей на идиотский, на твой взгляд, код и продолжай копать с unk_60F001. Там код распаковщика.



    А еще лучше почитать что-нибудь по дизассемблированию. Касперски, например...
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Поддерживаю rmn
     
  7. _staier

    _staier New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2003
    Сообщения:
    738
    Адрес:
    Ukraine
    не парься по этому поводу а, если ты знаешь как написать полностью автоматический дизассемблер - напиши плагин для ида - прославишься и разбогатеешь сразу же :derisive:


    Код (Text):
    1.  
    2. push offset unk_60F001
    3. call nullsub_1
    4.  




    ведь в этом - то в общем - то говоря и цель - остановить

    автоматические дизассемблеры.



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

    но и против этого есть приёмы .



    а вот против мозга вооружённого знаниями и дизассемблером вроде ida отдельные приёмы вообще не эффективны , другие мало эффективны.