Исследование osnbtool.exe

Тема в разделе "WASM.RESEARCH", создана пользователем Morze_CBP, 27 май 2010.

  1. Morze_CBP

    Morze_CBP New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2006
    Сообщения:
    4
    Доброго всем времени суток!
    Помогите разобраться с утилитой osnbtool.exe.
    Данная программа предназначена для работы с прошивками коммуникаторов на базе Windows Mobile (WM).
    Один из ключей утилиты (-ар) позволяет изменять размер Page Pool (в общих словах это буфер, куда попадает код для выполнения) в XIP.BIN (ядро системы). Из help'а:
    Т.е. osnbtool.exe -ap xip.bin 4 -y установит размер РР равный 4 Mb.
    У меня вопрос: каким образом osnbtool находит смещение, по которому находится значение РР?
    В процессе работы osnbtool выводит:
    Find "NKKD8" signature at offset: 0x00******
    Это понятно, сигнатура NKKD8 одна на весь XIP.BIN
    Find instruction at offset: 0x00******
    Эта инструкция выглядит что-то 9B 4F FF FF 64 B0 00 00 (а может и как-то по другому ищется)
    Find PagePool Value at offset: 0x00******
    Вот тут и интересно: смещение, по которому размещается значение РР в разных XIP'ах, находится на разных удалениях и от NKKD8, и от инструкции.
    Помогите дизассемблировать и выяснить алгоритм поиска РР.
    В архиве osnbtool.exe и два XIP'а для примера.
    Заранее спасибо!
     
  2. Morze_CBP

    Morze_CBP New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2006
    Сообщения:
    4
  3. freyr

    freyr New Member

    Публикаций:
    0
    Регистрация:
    23 фев 2010
    Сообщения:
    95
    вот так :)

    Код (Text):
    1.  for ( i56 = 0; i56 < v424 - 4; ++i56 )
    2.     {
    3.       if ( *(_DWORD *)((char *)v432 + i56) == 0x444B4B4E && *(_DWORD *)(v432 + i56 + 4) == 56 )
    4.       {
    5.         v148 = i56;
    6.         sub_410BB5("Find \"NKKD8\" signature at offset: 0x%08X\n", i56);
    7.         break;
    8.       }
    9.     }
    вообще разленились все :)
    hexrays в зубы и вперед...
    UPX думаю труда не составить снять )))
    И вообще можно было бы и у автора спросить, не думаю что он пожалел бы поделится столь __не ценной__ информацией (если бы она была ценна, на ехе висло бы что-то другое нежели UPX)

    P.S стиль коденга впечталил, ида даже граф нариовать не смогла все в 1 процедуре :)
     
  4. Morze_CBP

    Morze_CBP New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2006
    Сообщения:
    4
    Можно было бы, но утилита взята ромоделами с китайского форума и написана китайцем.
    Спасибо!