Корректировка LIB

Тема в разделе "WASM.RESEARCH", создана пользователем guest123, 22 апр 2006.

  1. guest123

    guest123 New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    17
    Добрый день господа!

    Сушествует следующая проблема:

    у меня есть библиотека, которая обеспечивает доступ к видеопамяти граф. карты. Lib - небесплатная, в ней в виде баннера при первом выводе на экран вместе с изображением выводится табличка с номером версии библиотеки. Вопрос ->можно как-нить избавиться от этого баннерного сообщения(без покупки библ-ки). Всё это дело немного осложняется тем, что либа построена под WindowsCE + для ARM-процессоров ( КПК ).
     
  2. guest123

    guest123 New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    17
    вообщем я под MS VS2005-дебаггером прошелся, нашел функцию, в которой идет проверка - нужно ли рисовать баннер. Теоретически ( я в асме - 0 ) можно подправить код, условия, или в начале функции сделать что-то типа ret, чтоб выйти из зло-функции. НО! как я могу сохранить изменения в lib-е? Я так думаю, что простой win32-дизассемблер несможет мне распотрошить либу... есть мысль в hex-редакторе попробовать переписать код в 16-тиричном виде в нужном месте... но как найти это нужное место?! под дизассемблерным кодом я еще более-менее ориентируюсь, но вот HEX-вид либы мне совершенно непонятен... Воины дзена! помогите!!!
     
  3. Avoidik

    Avoidik New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2004
    Сообщения:
    288
    Адрес:
    Russia
    ida и hex-редактор
     
  4. guest123

    guest123 New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    17
    а для IDA'ы ARM-процессор не будет проблемой?
     
  5. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576




    даже для демо версии не проблема
     
  6. guest123

    guest123 New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    17
    так, скачал IDA 4.9. Открыл lib-файл (мне ида навыбор предложила список *.obj - файлов, из которых либа состоит.) Нашел свою функцию, нашел команду, в которой вызывается отрисовка баннера. Теперь можно попробовать занопить это команду, это можно какнить сделать в ИДЕ ? и как мне можно впоследствии сохранить измененную lib'у ?
     
  7. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    в Иде посмотри file offset, потом в любом хекс редакторе,

    например WinHEX правь

    в Иде тоже можно, она создает diff файл, который

    обрабатывают сторонние тулзы, т.е. патчат файл

    основываясь на данных этого файла
     
  8. guest123

    guest123 New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    17
    в IDA показывается оффсет относительно *.obj - файла. По крайней мере я через Hex workshop нашел этот оффсет, но там совершенно другой код...
     
  9. guest123

    guest123 New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    17
    так, у меня в окне примерно следующее:



    .text:00000764 MOV R1, R4

    .text:00000768 MOV R0, R5

    .text:0000076C BL PHAL::Watermark::lol: raw(PHAL::Surface *,int)

    .text:00000770 MOV R0, R6

    .text:00000774 LDMFD SP!, {R4-R6,PC}





    могу ли я вместо BL <имя функции> написать BL 00000770 , чтоб просто перепрыгнуть через вызов... ?
     
  10. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    guest123

    вытащи obj из lib

    %path%\lib libname.lib /EXTRACT:objname.obj /OUT:objname.obj
     
  11. guest123

    guest123 New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    17
    блин, я совсем тупой... я немогу найти - КАК их вытащить! можно сделать "produce file", но там нету *.obj
     
  12. guest123

    guest123 New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    17
    вах, это в IDA как-то делать надо или в link.exe ?
     
  13. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    %path% - путь к bin каталогу студии
     
  14. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576




    это лучше в bat файл оформить

    типа
    Код (Text):
    1. @echo off
    2. %masm32%\bin\lib libv2.lib /EXTRACT:Release\synth.obj /OUT:synth.obj
    3. echo.
    4. pause
    5. cls
     
  15. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    guest123

    IDA - продвинутый дизассемблер, но не патчер! Для сохранения изменений и для доставания объектников из либы нужны сторонние утилиты. Asterix уже подробно описал как достать объектник из либы с помощью утилиты lib.exe, которая поставляется вместе с Visual Studio. Исправленный объектник можно обратно засунуть в либу с помощью lib.exe. Полное описание параметров командной строки для архиватора можно найти на msdn.
     
  16. guest123

    guest123 New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    17
    вау, я его вытащил!!! люди, спасибо вам за помошь! сильно неудивляйтесь, просто мне такими вещами никогда не приходилось заниматься... туплю вот... :)

    так, а насчет изменения кода - BL 00000770 вот так вот пойдет? или нужно занопить?
     
  17. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576




    это нужно смотреть справку по ARM ассемблеру
     
  18. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    guest123



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

    guest123 New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    17
    я поправил 4 байта по нужному смещению в *.obj на 4 нопа

    9090 9090. Открываю заново в IDA - на месте бывшей инструкции -> UMULLLSS R9, R0, R3, R0

    отсюда вопрос: как выхлядит "nop" в 16-м виде? полазил, нашел FAQ по взлому :). Там говорится, что nop - это байт 90h...
     
  20. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    guest123

    я не знаю как выглядит nop в ARM ассемблере %)