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

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

  1. Nitroz

    Nitroz New Member

    Публикаций:
    0
    Регистрация:
    1 фев 2005
    Сообщения:
    16
    Адрес:
    Russia
    nop прекрасно заменятся на mov r0, r0 (00 00 a0 e1) кстати ида почему-то считает эту команду NOP-ом, прям так и пишет :)

    а на счет 90 90 90 90 - прога после этого не падает? а банер выводится?
     
  2. guest123

    guest123 New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    17
    еще незнаю, я заменил на 0000 A0E1. IDA думает, что это mov R0, R3. Щас ищу инфу - как засунуть новый obj в либу обратно.



    кстати, на одном форумепрочитал, что для ARM-процессора инструкции NOP нету вообще!
     
  3. Quantum

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

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

    В x86 её тоже нет. 90h - это xchg eax,eax.
     
  4. Asterix

    Asterix New Member

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




    судя по мануалу есть



    можно попробовать сассемблить в самой Ида

    Edit->Patch program->Assemble
     
  5. Nitroz

    Nitroz New Member

    Публикаций:
    0
    Регистрация:
    1 фев 2005
    Сообщения:
    16
    Адрес:
    Russia
    вообще-то mov r0, r3 это 03 00 A0 E1

    вобщем скинь свой obj, или прожку готовую
     
  6. Asterix

    Asterix New Member

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

    кстати, lib'а большая?

    сколько внутри .obj ?
     
  7. guest123

    guest123 New Member

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

    вся либа - 160 кб, около 15-ти obj. Куда и как скинуть?
     
  8. Nitroz

    Nitroz New Member

    Публикаций:
    0
    Регистрация:
    1 фев 2005
    Сообщения:
    16
    Адрес:
    Russia
    залей на slil.ru
     
  9. guest123

    guest123 New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    17
    http://slil.ru/22703835

    залил, с либой набажил... каким-то образом в ней остался старый obj... :dntknw:
     
  10. Asterix

    Asterix New Member

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

    я не знаю как добавить измененный obj в либу, но как вариант, достать все obj и собрать либу заново с

    измененным obj
     
  11. Nitroz

    Nitroz New Member

    Публикаций:
    0
    Регистрация:
    1 фев 2005
    Сообщения:
    16
    Адрес:
    Russia
    Comparing files PocketHAL_ARM.lib and POCKETHAL_ARM1.LIB

    000087B0: 00 30

    000087B1: 00 A0

    000087B2: EB E1

    попробуй так.
     
  12. Asterix

    Asterix New Member

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

    если поменять байты как сказал Nitroz

    то показывает верно
    Код (Text):
    1. .text:00000978 00 00 A0 E1                                   NOP
     
  13. Nitroz

    Nitroz New Member

    Публикаций:
    0
    Регистрация:
    1 фев 2005
    Сообщения:
    16
    Адрес:
    Russia
    ты скажи работает или нет :)

    изначально если смотреть либу под Hiew-ом в том месте

    00 00 00 EB

    когда идой открываешь watermark.obj - там уже 03 00 00 EB

    пришлось патчить на mov r3,r3
     
  14. guest123

    guest123 New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    17
    блин, с помощью LIB.exe можно засунуть obj в либу, но нельзя указать место, где он должен в ней находиться... в либе все obj находятся в .\ARMRel\***.obj когда я добавляю obj в либу, то он там лежит сразу (без .\armrel\). Дирректории я смотрел в IDA, ктонить знает, как его засунуть по определенному пути?



    немогу проверить! я собирать ее обратно неумею!!!
     
  15. guest123

    guest123 New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    17
    ДА !!!!!!!!!!! Я сделал ЭТО! :lol: Мой настоящий первый взлом!!!!! :lol: :lol: :lol: на все про все я потратил около 12-ти часов, а можно было за 10 минут все сделать... Но для первого опыта с ассемблером и IDA я думаю нормально... :lol: :lol: :



    Люди!!!! ОГРОМНОЕ ВАМ ЧЕЛОВЕЧЕСКОЕ СПАСИБО!!!!

    Действительно ПОМОГЛИ!!! СПАСИБО! :lol:
     
  16. Nitroz

    Nitroz New Member

    Публикаций:
    0
    Регистрация:
    1 фев 2005
    Сообщения:
    16
    Адрес:
    Russia
    ну ты расскажи другим как ты сделал :)
     
  17. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Код (Text):
    1. .text:00000768 05 10 A0 E1                                   MOV     R1, R5
    2. .text:0000076C 04 00 A0 E1                                   MOV     R0, R4
    3. .text:00000770 03 00 00 EB                                   BL      _Draw_Watermark_PHAL__AAAXPAVSurface_2_H_Z
    4. ; PHAL::Watermark::Draw(PHAL::Surface *,int)
    5. .text:00000774
    6.  




    почему Ида так тупит с опкодами?
     
  18. Nitroz

    Nitroz New Member

    Публикаций:
    0
    Регистрация:
    1 фев 2005
    Сообщения:
    16
    Адрес:
    Russia
    ниче она не тупит

    это ж либа, по этому в hiew заместо BL мы видим пустышку (00 00 00 eb), а ида же уже реально подставляет адрес, в данном случае имеем (03 00 00 eb)
     
  19. guest123

    guest123 New Member

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

    с помощью LIB (в папке для CE в MS VS2005 ) вытащил из нее нужный *.obj.

    lib.exe d:\work\trash\PocketHAL_hack\PocketHAL_ARM.lib /EXTRACT:.\ARMRel\watermark.obj /OUT:target.obj



    полученный target.obj с помощью IDA дизассемблировал, в obj были экспортируемые функции Watermark::Update() и ::lol: raw



    вызов отрисовки баннера был в функции Update:



    .text:00000764 MOV R1, R4

    .text:00000768 MOV R0, R5

    .text:0000076C BL <указатель на функцию>

    .text:00000770 MOV R0, R6



    увидел смещение инструкции относительно начала файла, в Hex workshop заменил четыре байта(размер инструкции BL кажись) по адресу 0000076C(смещение) на 0000 A0E1 (или NOP или MOV R0,R3(у меня)). Проверил опять через иду поправленное место - все так. Удалил из lib-файла старый *.obj



    lib.exe PocketHAL_ARM.lib /REMOVE:.\ARMRel\watermark.obj /OUT:WithOutOBJ.lib



    добавил туда пропатченный:

    lib withoutOBJ.lib /INCLUDE:lol: :\work\trash\PocketHAL_hack\watermark.obj /OUT:Patched.lib



    провери работоспособность - все отлично, никакого баннера!

    Блин, как мне понравился ассемблер!!! :lol:

    Люди! я так счастлив!!!! всем огромное спасибо!!!!!!!
     
  20. Nitroz

    Nitroz New Member

    Публикаций:
    0
    Регистрация:
    1 фев 2005
    Сообщения:
    16
    Адрес:
    Russia
    guest123

    если бы пропатчил саму либу как я сказал вышел - было бы проще

    000087B0: 00 30

    000087B1: 00 A0

    000087B2: EB E1