nop прекрасно заменятся на mov r0, r0 (00 00 a0 e1) кстати ида почему-то считает эту команду NOP-ом, прям так и пишет а на счет 90 90 90 90 - прога после этого не падает? а банер выводится?
еще незнаю, я заменил на 0000 A0E1. IDA думает, что это mov R0, R3. Щас ищу инфу - как засунуть новый obj в либу обратно. кстати, на одном форумепрочитал, что для ARM-процессора инструкции NOP нету вообще!
guest123 я не знаю как добавить измененный obj в либу, но как вариант, достать все obj и собрать либу заново с измененным obj
Comparing files PocketHAL_ARM.lib and POCKETHAL_ARM1.LIB 000087B0: 00 30 000087B1: 00 A0 000087B2: EB E1 попробуй так.
попробовал, Ида ассемблить ARM не умеет, но если поменять байты как сказал Nitroz то показывает верно Код (Text): .text:00000978 00 00 A0 E1 NOP
ты скажи работает или нет изначально если смотреть либу под Hiew-ом в том месте 00 00 00 EB когда идой открываешь watermark.obj - там уже 03 00 00 EB пришлось патчить на mov r3,r3
блин, с помощью LIB.exe можно засунуть obj в либу, но нельзя указать место, где он должен в ней находиться... в либе все obj находятся в .\ARMRel\***.obj когда я добавляю obj в либу, то он там лежит сразу (без .\armrel\). Дирректории я смотрел в IDA, ктонить знает, как его засунуть по определенному пути? немогу проверить! я собирать ее обратно неумею!!!
ДА !!!!!!!!!!! Я сделал ЭТО! Мой настоящий первый взлом!!!!! на все про все я потратил около 12-ти часов, а можно было за 10 минут все сделать... Но для первого опыта с ассемблером и IDA я думаю нормально... : Люди!!!! ОГРОМНОЕ ВАМ ЧЕЛОВЕЧЕСКОЕ СПАСИБО!!!! Действительно ПОМОГЛИ!!! СПАСИБО!
Код (Text): .text:00000768 05 10 A0 E1 MOV R1, R5 .text:0000076C 04 00 A0 E1 MOV R0, R4 .text:00000770 03 00 00 EB BL _Draw_Watermark_PHAL__AAAXPAVSurface_2_H_Z ; PHAL::Watermark::Draw(PHAL::Surface *,int) .text:00000774 почему Ида так тупит с опкодами?
ниче она не тупит это ж либа, по этому в hiew заместо BL мы видим пустышку (00 00 00 eb), а ида же уже реально подставляет адрес, в данном случае имеем (03 00 00 eb)
ок, вообщем скачал 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() и :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:\work\trash\PocketHAL_hack\watermark.obj /OUT:Patched.lib провери работоспособность - все отлично, никакого баннера! Блин, как мне понравился ассемблер!!! Люди! я так счастлив!!!! всем огромное спасибо!!!!!!!
guest123 если бы пропатчил саму либу как я сказал вышел - было бы проще 000087B0: 00 30 000087B1: 00 A0 000087B2: EB E1