F.A.Q по портированию замэйновых патчей : Патчестроение : Форум |
Страница 1 из 7: [1] 2 3 4 5 ... 7 » |
SEVENI: |
08.11.09, 12:41 |
Написал статью для начинающих патчеров Портирование патча, который ставится в за-main'не Нам понадобится: 1) IDA Pro Advanced 5.2 2) Main-файл прошивки на которую есть патч(w660_r8bb001) и Main-файл прошивки под которую будем портировать патч(k550_r6bc002) 3) patsearchnt 4) 2 Idc файла (для применения/отката патча в IDA Pro Advanced) 5) babe2raw(именно она, т.к main2raw иногда, конвертирует с корявыми адресами) 6) компилятор от den_po (да, да именно им) начнём: 1 этап) // Создание исходника Конвертируем обе прошивки в .raw - формат Берем патч Патч: ;W660 R8BB001 ;Ability to minimize the window admission / transfer files via Bluetooth ;Ver 1.3 (stability fix) ;(c) Joker XT ;(p) Adow начнем с простых адресов, а именно: Код: f0148a: E069 B047 f014c8: B915F044 0110CE45 f03b78: 2868 8847 f03d20: AB0F0000 2F10CE45 f02eb6: 2068 8847 f03000: AB0F0000 2910CE45 f033b8: 244870B50E18 70B524488047 f0344c: 3E040000 1710CE45 f03458: 174830B50D18 30B517488047 f034b8: 4A040000 0710CE45 Открываем прошивку w660_r8bb001 в IDA Pro Advanced 5.2, переводим в Tumb-режим, ставим 4 в пункте number of opcode bytes и т.д(обьяснять как это делать не буду, не чайники) Применяем патч на прошивку с помошью ApplyPatch.idc (File=>idc file...) и так, берем первый адрес f0148a: E069 B047 к f0148a прибавляем оффсет +44000000(в патче указан именно этот) получаем 44F0148A - переходим по нему, видим это Теперь нажимаем кнопку "С" - бобежали циферки Нам нужна всего лишь одна строка ROM:44F0148A B0 47 BLX R6 создаем простой текстовой-файл первой строчкой вписываем include "x.inc" а ниже, копируем нашу строку, только в таком виде: org 0x44F0148A BLX R6 возьмем второй адрес 44F014C8(+44000000) открываем его и видим это сразу видно - это адрес: Код: ROM:44F014C8 01 DCB 1 ROM:44F014C9 10 DCB 0x10 ROM:44F014CA CE DCB 0xCE ; + ROM:44F014CB 45 DCB 0x45 ; E Нажимаем кнопку "D" 3 раза и получаем это ROM:44F014C8 01 10 CE 45 DCD unk_45CE1001 переделываем так org 0x44F014C8 DCD 0x45CE1001 Прошу обратить внимание на адрес 44F033B8: Код: ROM:44F033B8 70 B5 PUSH {R4-R6,LR} ROM:44F033BA 24 48 LDR R0, off_44F0344C ROM:44F033BC 80 47 BLX R0 здесь 3 строки, делаем их так: Код: org 0x44F033B8 PUSH {R4-R6,LR} LDR R0, 0x44F0344C BLX R0 адрес 0x44F0344C делаем так: Код: org 0x44F0344C off_44F0344C DCD 0x45CE1016+1 так же ищем все остальные адреса и в конце концов у нас получается половина готового исходника: Код: include "x.inc" ; --------------------------------------------------------------------------- org 0x44F0148A BLX R6 org 0x44F014C8 DCD 0x45CE1001 org 0x44F03B78 BLX R1 org 0x44F03D20 DCD 0x45CE102F org 0x44F02EB6 BLX R1 org 0x44F03000 DCD 0x45CE1029 org 0x44F033B8 PUSH {R4-R6,LR} LDR R0, 0x44F0344C BLX R0 org 0x44F0344C off_44F0344C DCD 0x45CE1016+1 org 0x44F03458 PUSH {R4,R5,LR} LDR R0, 0x44F034B8 BLX R0 org 0x44F034B8 off_44F034B8 DCD 0x45CE1006+1 ; --------------------------------------------------------------------------- этап 2) // Замэйн Переходим к адресам, которые лежат в "теле патча" Берем первый адрес нашего "тела": 1ce1000: 00000000000000000000000000000000 204EE06915E024480D18FFB5081C0021 1ce1000+44000000=45CE1000 переходим по адресу 45CE1000 и видим такое нажимаем "С" на всех желтых адресах ниже, до тех пор, пока не пойдут нули... Обратите внимание, Код: ROM:45CE1066 FF DCB 0xFF ROM:45CE1067 FF DCB 0xFF подобные адреса мы не трогаем, пока что... Теперь выделяем весь наш код(от адреса ROM:45CE1000 до ROM:45CE1098) Нажимаем File => Produce file => Create asm file... и сохраняем в удобное место. Теперь открываем его текстовым редактоом и в самый вверх вставляем нашу раннюю заготовку: Код: include "x.inc" ; --------------------------------------------------------------------------- org 0x44F0148A BLX R6 org 0x44F014C8 DCD 0x45CE1001 org 0x44F03B78 BLX R1 org 0x44F03D20 DCD 0x45CE102F org 0x44F02EB6 BLX R1 org 0x44F03000 DCD 0x45CE1029 org 0x44F033B8 PUSH {R4-R6,LR} LDR R0, 0x44F0344C BLX R0 org 0x44F0344C off_44F0344C DCD 0x45CE1016+1 org 0x44F03458 PUSH {R4,R5,LR} LDR R0, 0x44F034B8 BLX R0 org 0x44F034B8 off_44F034B8 DCD 0x45CE1006+1 ; --------------------------------------------------------------------------- Этап 3) // Оформление Исходника удаляем шапку ;Код: ; +-------------------------------------------------------------------------+ ; | This file is generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> | ; | Licensed to: Mach EDV Dienstleistungen, Jan Mach, 1 user, adv, 11/2007 | ; +-------------------------------------------------------------------------+ ; После всех loc_XXXXXXXX ставим ":" т.е loc_45CE1006: и т.д Все # нужно удалить, чтобы сделать быстро, нажимаем Ctrl+H в поле Что: ставим # поле Чем: оставляем пустым, заменяем всё Все ADDS превращаем в ADD Все MOVS превращаем в MOV Все SUBS превращаем в SUB Все ADR превращаем в adr (если таковые есть) Теперь наще DCB 0xFF DCB 0xFF все loc_XXXXXXXX+1, sub_XXXXXXXX+1 меняем на 0xXXXXXXXX+1 пример: 0x453E9488+1 заменяем на выравнивание align 4 Для "красоты" все адреса выносятся перед началом "тела исходника" т.е делаем так: Код: dword_45CE1068 DCD addr1 dword_45CE106C DCD addr2 dword_45CE1070 DCD addr3 off_45CE1074 DCD addr4 off_45CE1078 DCD addr5 off_45CE107C DCD addr6 off_45CE1080 DCD addr7 off_45CE1084 DCD addr8 off_45CE1088 DCD addr9 off_45CE108C DCD addr10 off_45CE1090 DCD addr11 off_45CE1094 DCD addr12 dword_45CE1098 DCD addr13 а это выносим выше "тела исходника" Код: addr1 = 0xFAC addr2 = 0xFAB addr3 = 0x668 addr4 = 0x453E9488+1 addr5 = 0x453D6194+1 addr6 = 0x454A83C8+1 addr7 = 0x454A8440+1 addr8 = 0x44F015B9 addr9 = 0x45CE104A+1 addr10 = 0x454AD595 addr11 = 0x453D45A8+1 addr12 = 0x453D6504+1 addr13 = 0x44A перед самым началом "тела исходника" пишем org 0x45A6C350 CODE16 где org 0x45A6C350 - это адрес, откуда пойдет "тело" нашего патча Наш исходник готов Этап 4) // портирование Откроем прошивку k550_r6bc002 в другом окне(с помощью IDA Pro Advanced 5.2) так же переведём в tumb-режим, только патч устанавливать не надо. Берём первый адрес из исходника 0x44F0148A открываем его в прошивке w660_r8bb001(переоткройте её или откатите установленный патч) Самый лучший и безошибочный способ нахождения адресов - создание паттерна(паттерн - кусок кода прошивки) Выделяем примерно 26 строк начиная с адреса 0x44F0148A Копируем этот кусок, открываем patsearchnt, удаляем старый паттерн в окне и вставляем наш, Ставим стартовый адрес начала main'а(0x44140000 SE) нажимаем load ff и указываем main-файл прошивки k550_r6bc002 в .raw формате жмем Convert Теперь, что касается паттерна: Код: ??,69 ??,1C ??,??,??,01 ??,??,??,FA[code] в нём присутствуют как 2-х байтные, так и 4-x байтные строки 4-x байтные строки мы всегда заменяем на ??,??,??,?? т.е будет так: [code]??,69 ??,1C ??,??,??,?? ??,??,??,?? ок, разобрались, нажимаем Search - ура, адрес найден - 44DB715A Что касается вот этого адреса: org 0x44F033B8 PUSH {R4-R6,LR} LDR R0, 0x44F0344C BLX R0 org 0x44F0344C off_44F0344C DCD 0x45CE1016+1 делаем так: находим 0x44F033B8 в прошивке w660_r8bb001 портируем его на k550_r6bc002 получаем 0x44DB9110 находим 0x44F0344C в прошивке w660_r8bb001 портируем его на k550_r6bc002 получаем 0x44DB91A8 находим 0x45CE1016+1 как находим? - ищем 0x45CE1016 в прошивке w660_r8bb001 - это за main'овый адрес, я расчитываю его для своего места и получаю 0x45A6C366 и прибавляю 1 0x45A6C366+1 В патче присутствуют текстовые метки 0x668 с помошью LNGEditor находим id метки в языковом файле w660_r8bb001(0x668) Свернуть теперь ишем такое название в языковом файле k550_r6bc002 и находим 0x114C и так ищем все остальные адреса, после того, как мы портировали всё, у нас должно получиться так: Код: include "x.inc" ; --------------------------------------------------------------------------- org 0x44DB715A BLX R6 org 0x44DB98DC BLX R1 org 0x44DB8C42 BLX R1 org 0x44DB7198 DCD 0x45A6C351 org 0x44DB9A84 DCD 0x45A6C37F org 0x44DB8D8C DCD 0x45A6C379 org 0x44DB91B4 PUSH {R4,R5,LR} LDR R0, 0x44DB9214 BLX R0 org 0x44DB9214 off_44DE1494 DCD 0x45A6C356+1 org 0x44DB9110 PUSH {R4-R6,LR} LDR R0, 0x44DB91A8 BLX R0 org 0x44DB91A8 off_44DE1428 DCD 0x45A6C366+1 ; --------------------------------------------------------------------------- addr1 = 0x452817E0+1 addr2 = 0x4526E708+1 addr3 = 0x4533FF9C+1 addr4 = 0x45340014+1 addr5 = 0x44DB7289 addr6 = 0x45344B75 addr7 = 0x4526CB1C+1 addr8 = 0x4526EA78+1 addr9 = 0x45A6C39A+1 addr10 = 0xFAC addr11 = 0xFAB addr12 = 0x114C addr13 = 0x44A ; --------------------------------------------------------------------------- org 0x45A6C350 CODE16 LDR R6, off_45CE1084 ; DATA XREF: ROM:44F014C8o LDR R0, [R4,0x1C] B loc_45CE1032 ; --------------------------------------------------------------------------- loc_45CE1006: ; CODE XREF: ROM:44F0345Cj LDR R0, dword_45CE1098 ADD R5, R1, R0 PUSH {R0-R7,LR} ADD R0, R1, 0 MOV R1, 0 LDR R7, off_45CE1078 BLX R7 POP {R0-R7,PC} ; --------------------------------------------------------------------------- loc_45CE1016: ; CODE XREF: ROM:44F033BCj ; DATA XREF: ROM:off_44F0344Co LDR R0, dword_45CE1098 SUB R0, 0xC ADD R6, R1, R0 PUSH {R0-R7,LR} ADD R0, R1, 0 MOV R1, 0 LDR R7, off_45CE1078 BLX R7 POP {R0-R7,PC} ; --------------------------------------------------------------------------- LDR R1, dword_45CE106C ; DATA XREF: ROM:44F03000o LDR R0, [R4] B loc_45CE1032 ; --------------------------------------------------------------------------- LDR R1, dword_45CE106C ; DATA XREF: ROM:44F03D20o LDR R0, [R5] loc_45CE1032: ; CODE XREF: ROM:45CE1004j ; ROM:45CE102Cj PUSH {R0-R7,LR} ADD R6, R0, 0 LDR R1, dword_45CE1068 LDR R2, off_45CE1088 LDR R7, off_45CE107C BLX R7 LDR R2, dword_45CE1070 LDR R1, dword_45CE1068 ADD R0, R6, 0 LDR R7, off_45CE1080 BLX R7 POP {R0-R7,PC} ; --------------------------------------------------------------------------- loc_45CE104A: ; DATA XREF: ROM:off_45CE1088o PUSH {R0-R7,LR} LDR R0, off_45CE108C LDR R7, off_45CE1090 BLX R7 CMP R0, 0 BEQ loc_45CE105A LDR R7, off_45CE1094 BLX R7 loc_45CE105A: ; CODE XREF: ROM:45CE1054j LDR R7, off_45CE1074 BLX R7 MOV R1, 0 LDR R7, off_45CE1078 BLX R7 POP {R0-R7,PC} ; --------------------------------------------------------------------------- align 4 dword_45CE1068 DCD addr10 dword_45CE106C DCD addr11 dword_45CE1070 DCD addr12 off_45CE1074 DCD addr1 off_45CE1078 DCD addr2 off_45CE107C DCD addr3 off_45CE1080 DCD addr4 off_45CE1084 DCD addr5 off_45CE1088 DCD addr9 off_45CE108C DCD addr6 off_45CE1090 DCD addr7 off_45CE1094 DCD addr8 dword_45CE1098 DCD addr13 ; ends Теперь осталось скомпилировать патч Этап 5) Компилирование патча Рапаковываем компилятор от den_po в любую папку, у меня это D:\armpc2\ Кладём туда main-файл прошивки k550_r6bc002 в .raw - формате, наш исходник, называем его Untitled1 Открываем Командную строку и вписываем такую команду: Код: D:\armpc2\make.bat Untitled1.asm K550_R6BC002_MAIN_GENERIC_LI_RED52.raw 44140000 v.info>log.txt нажимаем выполнить и получаем скомпилированный патч. Патч: ;K550 SW-R6BC002 ;Возможность сворачивать окно приёма/передачи файлов по Bluetooth etc ;Ver 1.3 ;(c) Joker XT ;(p) SEVENI Не всегда так всё легко, байты могут не совпадать, разные ошибки. По всем вопросам писать в тему Спасибо Arthur Oganyan, за выкладывание материала Автор F.A.Q.: SEVENI Прикрепленный к сообщению файл: Compilator.zip (64.08 kb; 194 hits) Скачать файл Idc.zip (6.82 kb; 139 hits) Скачать файл patsearchnt.zip (179.00 kb; 155 hits) Скачать файл |
makzim: |
08.04.10, 23:32 |
А что делать если после отката патча, надо портировать замейновые адреса, а они там нулевые, тоесть соответствующий адрес в другой прошивке найти нельзя через Patsearchnt??? |
D3mon: |
08.04.10, 23:45 |
BlackSerh, он не это имел ввиду) makzim, такие адреса оставляй как есть, не надо loc_ на 0х менять! Если конкретно по мануалу, то такой адрес: Код: addr9 = 0x45CE104A+1 лучше так: loc_45CE104A+1 Потому что этот адрес ведет в сам патч! |
makzim: |
08.04.10, 23:52 |
D3mon пишет: BlackSerh, он не это имел ввиду) makzim, такие адреса оставляй как есть, не надо loc_ на 0х менять! Если конкретно по мануалу, то такой адрес: Код: addr9 = 0x45CE104A+1 лучше так: loc_45CE104A+1 Потому что этот адрес ведет в сам патч! Как раз таки это и имел :) Спс... Просто я не уверен был, ставить любые замейновые или все таки каким то образом искать соответствующие... :) А что по мануалу loc_ и sub_ можно не менять? кстати, а у меня еще есть и unk_504830D с ним надо что нибудь делать? |
D3mon: |
09.04.10, 17:54 |
makzim писал: А что по мануалу loc_ и sub_ можно не менять? их нужны менять! но не всегда! для примера, смотрим на патч, который в мануале, и видим, что в нем есть такой код: Код: loc_45CE104A: PUSH {R0-R7,LR} LDR R0, off_45CE108C LDR R7, off_45CE1090 BLX R7 CMP R0, 0 BEQ loc_45CE105A LDR R7, off_45CE1094 BLX R7 после этого видим, что адрес addr9 = loc_45CE104A+1 ведет как раз к этому куску! Поэтому здесь не нужно loc_ на 0х менять! unk_504830D с ним надо что нибудь делать? поменяй на 0x |
makzim: |
10.04.10, 04:21 |
Patcher спс... все получилось :) |
vetel: |
30.07.10, 14:27 |
вот пробую портировать патч Код:;W610 SW-R6BC002 ;Добавить в информацию о файле отображение размера файла в байтах. ;Работает также с папками, java-приложениями и e-mail сообщениями. ;Добавлено раздельное отображение у java-приложений размера jar архива и данных приложения. ;v4 ;(!) Внимание, данная версия не полная, не работает с e-mail сообщениями. Позже все будет :) ;(c) Tartes ;(p) awg 44eb97f2: 03CF083F19F039FDE060 01490847C0462DBBAA45 44ebd786: C069002115F06FFDA862 01490847FFFF01BBAA45 44ec00b2: 321C052103A87AF182F8 01490847C04619BBAA45 44ec160e: 03CF083F11F02BFEE060 01490847C0462DBBAA45 44f7bc1c: FA61 C046 44f7bbe2: 207818326946F6F700FF 01490847C04641BBAA45 45aabb00: 00000000000000000000000000000000 C069061C0021414A9047311C00F061F8 45aabb10: 00000000000000000000000000000000 A8620B26414A1047321C052103A83D4C 45aabb20: 00000000000000000000000000000000 A047029900F055F83D4C204703CF083F 45aabb30: 00000000000000000000000000000000 364A9047396800F04CF8E060394A1047 45aabb40: 00000000000000000000000000000000 207818326946324B9847F0B4A0684569 45aabb50: 00000000000000000000000000000000 8669A9193C4800F03CF88CB00090384F 45aabb60: 00000000000000000000000000000000 01973B48029034480390012292029542 45aabb70: 00000000000000000000000000000000 02D2281C334F01E0A80A334F264A9047 45aabb80: 00000000000000000000000000000000 0490381C291C00F024F805902C480690 45aabb90: 00000000000000000000000000000000 2E480790294808902748099001229202 45aabba0: 00000000000000000000000000000000 964202D2301C274F01E0B00A264F1A4A 45aabbb0: 00000000000000000000000000000000 90470A90381C311C00F00BF80B9000A8 45aabbc0: 00000000000000000000000000000000 05210C22134FB8470CB0F0BCF861164B 45aabbd0: 00000000000000000000000000000000 18470EB501229202914215D387B00090 45aabbe0: 00000000000000000000000000000000 1448019011480290081C0B4A90470390 45aabbf0: 00000000000000000000000000000000 10480490134805900D48069000A80521 45aabc00: 00000000000000000000000000000000 0722044B984707B00EBDFFFF6D32ED44 45aabc10: 00000000000000000000000000000000 ED29F7442DDB334579D8334593D7EB44 45aabc20: 00000000000000000000000000000000 BD00EC44FD97EB44EDBBF74428000078 45aabc30: 00000000000000000000000000000000 29000078A0000078200000783A000078 45aabc40: 00000000000000000000000000000000 0A000078730400005706000058040000 45aabc50: 00000000 0F1C0000 на к550 р8, скомпилился нормально, но почему то не хватает 4 байтов,хотя я только адреса портировал ничего больше не менял, в оригинальном исходнике все отлично как надо, вот оригинальный исходник Код:include "x.inc" ; --------------------------------------------------------------------------- org 0x44EB97F2 LDR R1, 0x44EB97F8 BX R1 DCB 0xC0 DCB 0x46 off_44EB97F8 DCD 0x45AABB2C+1 ; DATA XREF: ROM:44EB97F2r ; --------------------------------------------------------------------------- org 0x44EBD786 LDR R1, 0x44EBD78C BX R1 align 4 off_44EBD78C DCD 0x45AABB00+1 ; DATA XREF: ROM:44EBD786r ; --------------------------------------------------------------------------- org 0x44EC00B2 LDR R1, 0x44EC00B8 BX R1 DCB 0xC0 DCB 0x46 off_44EC00B8 DCD 0x45AABB18+1 ; DATA XREF: ROM:44EC00B2r ; --------------------------------------------------------------------------- org 0x44EC160E LDR R1, 0x44EC1614 BX R1 DCB 0xC0 DCB 0x46 off_44EC1614 DCD 0x45AABB2C+1 ; DATA XREF: ROM:44EC160Er ; --------------------------------------------------------------------------- org 0x44F7BC1C NOP ; --------------------------------------------------------------------------- org 0x44F7BBE2 LDR R1, 0x44F7BBE8 BX R1 DCB 0xC0 DCB 0x46 off_44F7BBE8 DCD 0x45AABB40+1 ; DATA XREF: ROM:44F7BBE2r ; --------------------------------------------------------------------------- addr1 = 0x44ED326D addr2 = 0x44F729ED addr3 = 0x4533DB2D addr4 = 0x4533D879 addr5 = 0x44EBD793 addr6 = 0x44EC00BD addr7 = 0x44EB97FD addr8 = 0x44F7BBED ORG 0x45AABB00 CODE16 LDR R0, [R0,0x1C] ADD R6, R0, 0 MOV R1, 0 LDR R2, dword_45AABC0C BLX R2 ADD R1, R6, 0 BL sub_45AABBD2 STR R0, [R5,0x28] MOV R6, 0xB LDR R2, dword_45AABC1C BX R2 ; --------------------------------------------------------------------------- ADD R2, R6, 0 MOV R1, 5 ADD R0, SP, 0xC LDR R4, dword_45AABC14 BLX R4 LDR R1, [SP,8] BL sub_45AABBD2 LDR R4, dword_45AABC20 BX R4 ; --------------------------------------------------------------------------- LDMIA R7!, {R0,R1} SUB R7, 8 LDR R2, dword_45AABC0C BLX R2 LDR R1, [R7] BL sub_45AABBD2 STR R0, [R4,0xC] LDR R2, dword_45AABC24 BX R2 ; --------------------------------------------------------------------------- LDRB R0, [R4] ADD R2, 0x18 MOV R1, SP LDR R3, dword_45AABC10 BLX R3 PUSH {R4-R7} LDR R0, [R4,8] LDR R5, [R0,0x14] LDR R6, [R0,0x18] ADD R1, R5, R6 LDR R0, dword_45AABC48 BL sub_45AABBD2 SUB SP, SP, 0x30 STR R0, [SP] LDR R7, dword_45AABC40 STR R7, [SP,4] LDR R0, dword_45AABC50 STR R0, [SP,8] LDR R0, dword_45AABC38 STR R0, [SP,0xC] MOVL R2, 0x400 CMP R5, R2 BCS loc_45AABB78 ADD R0, R5, 0 LDR R7, dword_45AABC44 B loc_45AABB7C ; --------------------------------------------------------------------------- loc_45AABB78: ; CODE XREF: ROM:45AABB70j LSR R0, R5, 0xA LDR R7, dword_45AABC48 loc_45AABB7C: ; CODE XREF: ROM:45AABB76j LDR R2, dword_45AABC18 BLX R2 STR R0, [SP,0x10] ADD R0, R7, 0 ADD R1, R5, 0 BL sub_45AABBD2 STR R0, [SP,0x14] LDR R0, dword_45AABC40 STR R0, [SP,0x18] LDR R0, dword_45AABC4C STR R0, [SP,0x1C] LDR R0, dword_45AABC3C STR R0, [SP,0x20] LDR R0, dword_45AABC38 STR R0, [SP,0x24] MOVL R2, 0x400 CMP R6, R2 BCS loc_45AABBAA ADD R0, R6, 0 LDR R7, dword_45AABC44 B loc_45AABBAE ; --------------------------------------------------------------------------- loc_45AABBAA: ; CODE XREF: ROM:45AABBA2j LSR R0, R6, 0xA LDR R7, dword_45AABC48 loc_45AABBAE: ; CODE XREF: ROM:45AABBA8j LDR R2, dword_45AABC18 BLX R2 STR R0, [SP,0x28] ADD R0, R7, 0 ADD R1, R6, 0 BL sub_45AABBD2 STR R0, [SP,0x2C] ADD R0, SP, 0 MOV R1, 5 MOV R2, 0xC LDR R7, dword_45AABC14 BLX R7 ADD SP, SP, 0x30 POP {R4-R7} STR R0, [R7,0x1C] LDR R3, dword_45AABC28 BX R3 ; =============== S U B R O U T I N E ======================================= sub_45AABBD2: ; CODE XREF: ROM:45AABB0Cp ; ROM:45AABB24p ... var_2C = -0x2C var_28 = -0x28 var_24 = -0x24 var_20 = -0x20 var_1C = -0x1C var_18 = -0x18 var_14 = -0x14 PUSH {R1-R3,LR} MOVL R2, 0x400 CMP R1, R2 BCC locret_45AABC08 SUB SP, SP, 0x1C STR R0, [SP,0x2C+var_2C] LDR R0, dword_45AABC34 STR R0, [SP,0x2C+var_28] LDR R0, dword_45AABC2C STR R0, [SP,0x2C+var_24] ADD R0, R1, 0 LDR R2, dword_45AABC18 BLX R2 STR R0, [SP,0x2C+var_20] LDR R0, dword_45AABC34 STR R0, [SP,0x2C+var_1C] LDR R0, dword_45AABC44 STR R0, [SP,0x2C+var_18] LDR R0, dword_45AABC30 STR R0, [SP,0x2C+var_14] ADD R0, SP, 0x2C+var_2C MOV R1, 5 MOV R2, 7 LDR R3, dword_45AABC14 BLX R3 ADD SP, SP, 0x1C locret_45AABC08: ; CODE XREF: sub_45AABBD2+8j POP {R1-R3,PC} ; End of function sub_45AABBD2 ; --------------------------------------------------------------------------- align 4 dword_45AABC0C DCD addr1 ; DATA XREF: ROM:45AABB06r ; ROM:45AABB30r dword_45AABC10 DCD addr2 ; DATA XREF: ROM:45AABB46r dword_45AABC14 DCD addr3 ; DATA XREF: ROM:45AABB1Er ; ROM:45AABBC4r ... dword_45AABC18 DCD addr4 ; DATA XREF: ROM:loc_45AABB7Cr ; ROM:loc_45AABBAEr ... dword_45AABC1C DCD addr5 ; DATA XREF: ROM:45AABB14r dword_45AABC20 DCD addr6 ; DATA XREF: ROM:45AABB28r dword_45AABC24 DCD addr7 ; DATA XREF: ROM:45AABB3Cr dword_45AABC28 DCD addr8 ; DATA XREF: ROM:45AABBCEr dword_45AABC2C DCD 0x78000028 ; DATA XREF: sub_45AABBD2+12r dword_45AABC30 DCD 0x78000029 ; DATA XREF: sub_45AABBD2+26r dword_45AABC34 DCD 0x780000A0 ; DATA XREF: sub_45AABBD2+Er ; sub_45AABBD2+1Er dword_45AABC38 DCD 0x78000020 ; DATA XREF: ROM:45AABB66r ; ROM:45AABB98r dword_45AABC3C DCD 0x7800003A ; DATA XREF: ROM:45AABB94r dword_45AABC40 DCD 0x7800000A ; DATA XREF: ROM:45AABB5Er ; ROM:45AABB8Cr dword_45AABC44 DCD 0x473 ; DATA XREF: ROM:45AABB74r ; ROM:45AABBA6r ... dword_45AABC48 DCD 0x657 ; DATA XREF: ROM:45AABB54r ; ROM:45AABB7Ar ... dword_45AABC4C DCD 0x458 ; DATA XREF: ROM:45AABB90r dword_45AABC50 DCD 0x1C0F ; DATA XREF: ROM:45AABB62r ; ROM ends |
Therion: |
30.07.10, 14:51 |
vetel, в иде,на строчках подобного вида STR R0, [SP,0x2C+var_1C] нажми K тогда это будет ненадо var_2C = -0x2C var_28 = -0x28 var_24 = -0x24 var_20 = -0x20 var_1C = -0x1C var_18 = -0x18 var_14 = -0x14 DCB 0xC0 DCB 0x46 это можно заменить этим:align 4 org 0x44EC00B2 LDR R1, 0x44EC00B8 BX R1 DCB 0xC0 DCB 0x46 off_44EC00B8 DCD 0x45AABB18+1 ; DATA XREF: ROM:44EC00B2rъ ты опьять же таки грузиш одно а уравнюеш другое Добавлено 30.7.10 13:53 тут столько косяков,что ида тут не виновата. переделай всё заново и внимательно... линкуй то что уровнял |
vetel: |
30.07.10, 15:02 |
Therion, я пробовал заменить эти DCB 0xC0 DCB 0x46 значения на align 4, но из за этого у меня почему патч неправильно компилился, вот DCB 0xFF DCB 0xFF я заменил этим align 4, вот исходник у меня сейчас нормально компилится и полученный патч абсолютно идентичен оригиналу, и в нем я уже смысла нет ковырятся, мне вот только осталось адреса портануть, почему иногда через patsearchnt не находит адрес? выделяй хоть много хоть мало кода все равно не находит Добавлено 30.7.10 15:22 Therion, да в этом то нет проблем, проблемы при портировании, первый раз портанул все адреса и в патче не хватало 4 байтов, я скопировал их с оригинала w610, залил этот патч но везде в инфе о файле ребуты |
vile: |
30.07.10, 15:23 |
Помоему уже достаточно этих Фагов по портированию ) они все одинаковые получаются ) ничего нового уже рассказать не получиться |
Страница 1 из 7: [1] 2 3 4 5 ... 7 » |
URL этой темы: https://mobilefree.justdanpo.ru/newbb_plus/viewtopic.php?topic_id=4457 © 2005-2018 supertrubka.org |