motofan logo
       
> 

Вытаскивание Классов Из Прошивки

4ep
сообщение 28.6.2006, 19:25


Гуру
******

Группа: Пользователи
Сообщений: 856
Регистрация: 9.6.2005
Из: Сызрань
Пользователь №: 43 886
Модель телефона: ROKR E2
Прошивка: Калейдоскоп

Рейтинг: 217



Думал я над тем, что написать, ну вроде есть мануалы разной тематики. Короче не знаю подойдёт, не знаю нет. Написал мануал по вытаскиванию классов из прошивки. Пример действия можно увидеть здесь Внимание! Делаем Классы Bt От L7 На Е398 - тут вытаскивались классы доступа к Bluetooth из Java из прошивки от Motorola L7, и внедрялись в прошивку от E398 (E1). На данный момент работа ведётся.

Понадобится:
IDA какой нибудь версии (у меня 4.8) – Прогу ищите в Интернете. Здесь нельзя выкладывать ссылку на эту программу. Прога весомая примерно 42 Мб.
Деассемблированная кодовая группа 1 (CG1) прошивки из которой надо вытащить классы. (Для тех у кого её нет ниже)
Список классов которые надо вытащить.

Для тех у кого нет деассемблированной CG1:
Надо разобрать прошивку из которой надо вытянуть классы прогой SHXCodec скачать https://motofan.ru/board/index.php?act=Atta...e=post&id=44110, её обсуждение здесь Shxсodec.

Последовательность действий по разбору прошивки на кодовые группы:
1. Запустить прогу SHXCodec.
2. Нажать кнопку Open and Split.
3. Выбрать файл прошивки.
4. Закрыть программу.
После этих действий в папке с прошивкой должны появиться новые файлы Из них надо выбрать файл в имени которого присутствует CG1.
Далее надо самому его деассемблировать в программе IDA (Далее промто Ида). Подробнее об этом здесь___.

Сейчас я подробно опишу как вытащить 3 класса из прошивки от L7.
Вот мы запустили Иду с открытой CG1.

IMG1 - Тоесть первый рисунок прикреплённый снизу.

Мне надо вытащить класс com.rococosoft.impronto.baseband.AclLink
Перевожу бегунок в Иде в самый низ (Примерно оттуда начинаются классы), нажимаю комбинацию клавиш Alt+T, или в самой Иде значок сверху в виде бинокля с какой-то фигнёй.

IMG2

Пишу там Class_ComRococosoftImprontoBaseband_Acllink (почему именно так не спрашивайте, я сам этого не понял. Вообще поиск классов это отдельная тема, попробуйте разобраться сами). Ставлю точку на Search Up (Мы же находимся внизу, а надо искать вверх), нажимаю OK.
Ида ведёт поиск, снизу слева можно увидеть адреса которые она прочёсывает. Поиск может оказаться довольно долгим.
И вот мы находим что-то типа этого:

IMG3

Но как можно понять из рисунка это не сам класс, а всего лишь указатель при двойном нажатии мышью на который мы попадаем на сам класс.

IMG4

Далее открываем блокнот и заносим туда данные класса.

Код

EXTRAM:127A32C0 Class_ComRococosoftImprontoBaseband_Acllink DCD Class_JavaLang_Class; root
EXTRAM:127A32C0                                        ; DATA XREF: ROM:Method_ComRococosoftImprontoBaseband_Acllink_Getremotedevice_V_3205 o
EXTRAM:127A32C0                                        ; ROM:Method_ComRococosoftImprontoBaseband_Acllink_Init_V_1921 o ...
EXTRAM:127A32C0                 DCD 0                  ; field_4
EXTRAM:127A32C0                 DCD jstr_ComRococosoftImprontoBaseband; class_name
EXTRAM:127A32C0                 DCD jstr_Acllink      ; interface_name
EXTRAM:127A32C0                 DCD Class_ComMotorolaSynerjSvcDevice_Networklistener; next
EXTRAM:127A32C0                 DCW 0x6421            ; field_14
EXTRAM:127A32C0                 DCW 0x3A2              ; field_16
EXTRAM:127A32C0                 DCD Class_JavaLang_Object; parent
EXTRAM:127A32C0                 DCD Consts_ComRococosoftImprontoBaseband_Acllink; Interface
EXTRAM:127A32C0                 DCD Fields_ComRococosoftImprontoBaseband_Acllink; Fields
EXTRAM:127A32C0                 DCD Methods_ComRococosoftImprontoBaseband_Acllink; Methods
EXTRAM:127A32C0                 DCD 0                  ; field_28
EXTRAM:127A32C0                 DCD 0                  ; field_2C
EXTRAM:127A32C0                 DCD 0x30005            ; field_30
EXTRAM:127A32C0                 DCD 0                  ; field_34
EXTRAM:127A32C0                 DCD 0                  ; finalize_proc


(Я думаю что копирование и вставку объяснять не надо)

Далее находим поле констант Consts_ComRococosoftImprontoBaseband_Acllink и жмём на него 2 раза.

IMG5

Копируем до следующей группы констант, и вставляем это в тот же txt-файл.

Код

ROM:108F44C0 Consts_ComRococosoftImprontoBaseband_Acllink DCD 0x1A
ROM:108F44C0                                        ; DATA XREF: EXTRAM:Class_ComRococosoftImprontoBaseband_Acllink o
ROM:108F44C4                 DCD Class_ComRococosoftImprontoBaseband_AcllinkPeerdevice
ROM:108F44C4                 DCD Method_ComRococosoftImprontoBaseband_AcllinkPeerdevice_Init_V_1921
ROM:108F44C4                 DCD Class_JavaUtil_Vector_10666, Method_JavaUtil_Vector_10666_Init_V_3913
ROM:108F44C4                 DCD Method_ComRococosoftImprontoBaseband_Acllink_Getremotedevice_V_3205
ROM:108F44C4                 DCD Method_ComRococosoftImprontoBaseband_Acllink_Isauthenticated_Z_4076
ROM:108F44C4                 DCD Method_ComRococosoftImprontoBaseband_Acllink_Stackauthenticate_Z_4076
ROM:108F44C4                 DCD Method_ComRococosoftImprontoBaseband_Acllink_Getremoteaddress__2886
ROM:108F44C4                 DCD Method_ComRococosoftImprontoBaseband_Acllink_Isencrypted_Z_4076
ROM:108F44C4                 DCD Method_ComRococosoftImprontoBaseband_Acllink_Stackencrypt_Zz_8280
ROM:108F44C4                 DCD Method_JavaUtil_Vector_10666_Contains_Z_8832, Method_JavaUtil_Vector_10666_Addelement_V_8650
ROM:108F44C4                 DCD Method_ComRococosoftImpronto_Improntolocaldevice_Getimprontolocaldevice__4724
ROM:108F44C4                 DCD Method_ComRococosoftImpronto_Improntolocaldevice_Getbtsecuritymanager_I_7947
ROM:108F44C4                 DCD Method_ComRococosoftImprontoBcc_Btsecuritymanager_Getsecuritymode_I_3360
ROM:108F44C4                 DCD Class_JavaxBluetooth_Bluetoothconnectionexception
ROM:108F44C4                 DCD off_107D2120, Method_JavaxBluetooth_Bluetoothconnectionexception_Init_IV_2381
ROM:108F44C4                 DCD Method_ComRococosoftImprontoBaseband_Acllink_Decrypt_Z_6596
ROM:108F44C4                 DCD Method_JavaUtil_Vector_10666_Removeelement_Z_8832
ROM:108F44C4                 DCD Method_JavaUtil_Vector_10666_Isempty_Z_4076, Method_JavaUtil_Vector_10666_Size_9427_I_3360
ROM:108F44C4                 DCD Method_ComRococosoftImpronto_Improntolocaldevice_Getlinkmanager_E_9197
ROM:108F44C4                 DCD Method_ComRococosoftImprontoBaseband_Linkmanager_10399_Removeacllink_V_1921
ROM:108F44C4                 DCD Method_JavaUtil_Vector_10666_Elements_Y_7255
ROM:108F4528                 DCB 0, 0x87, 0x8A, 0x87, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A
ROM:108F4528                 DCB 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x87, 8
ROM:108F4528                 DCB 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A
ROM:108F4542                 ALIGN 4


Далее надо вернуться назад к классу. Делается это так: под названием группы констант справа есть поле ;

Код

DATA XREF: EXTRAM:Class_ComRococosoftImprontoBaseband_Acllink o


Нажатие на _ComRococosoftImprontoBaseband_Acllink возвращает к классу. (Рис6)

IMG6

Далее ниже поля констант есть поле Полей (Fields) Fields_ComRococosoftImprontoBaseband_Acllink
После нажатия не него мы переходим к строчке ROM:108DBADC Fields_ComRococosoftImprontoBaseband_Acllink DCD 3, так вот DCD 3 означает что в группе полей Fields_ComRococosoftImprontoBaseband_Acllink три поля. Копируем.

Код

ROM:108DBADC Fields_ComRococosoftImprontoBaseband_Acllink DCD 3
ROM:108DBADC                                        ; DATA XREF: EXTRAM:Class_ComRococosoftImprontoBaseband_Acllink o
ROM:108DBAE0 Field_ComRococosoftImprontoBaseband_Acllink DCW 0xFC4              ; field_0
ROM:108DBAE0                 DCW 0x1A2              ; field_2
ROM:108DBAE0                 DCD 0x8002            ; field_4
ROM:108DBAE0                 DCD Class_ComRococosoftImprontoBaseband_Acllink; field_8
ROM:108DBAE0                 DCD 0                  ; field_C
ROM:108DBAF0 Field_ComRococosoftI_6286_Acllink_1 DCW 0x1B9D            ; field_0
ROM:108DBAF0                 DCW 0x12D              ; field_2
ROM:108DBAF0                 DCD 0x8002            ; field_4
ROM:108DBAF0                 DCD Class_ComRococosoftImprontoBaseband_Acllink; field_8
ROM:108DBAF0                 DCD 1                  ; field_C
ROM:108DBB00 Field_ComRococosoftI_6286_Acllink_2 DCW 0x12DF            ; field_0
ROM:108DBB00                 DCW 0x12D              ; field_2
ROM:108DBB00                 DCD 0x8002            ; field_4
ROM:108DBB00                 DCD Class_ComRococosoftImprontoBaseband_Acllink; field_8
ROM:108DBB00                 DCD 2                  ; field_C


Кстати измерение идёт в шестнадцатеричной системе исчисления, тоесть DCD 0x10 будет означать что в данной группе полей 16 полей, а DCD 0xA – 10.
Возвращаемся так же как было описано раньше.

Далее заходим в поле методов (Methods). Вот их как раз 16. Копируем.

Код

ROM:10896160 Methods_ComRococosoftImprontoBaseband_Acllink DCD 0x10
ROM:10896160                                        ; DATA XREF: EXTRAM:Class_ComRococosoftImprontoBaseband_Acllink o
ROM:10896164 Method_ComRococosoftImprontoBaseband_Acllink_Getremotedevice_V_3205 DCW 0x9C0              ; Method_name
ROM:10896164                                        ; DATA XREF: ROM:108F44C4 o
ROM:10896164                                        ; ROM:108F92A4 o ...
ROM:10896164                 DCW 0x1846            ; Method_type
ROM:10896164                 DCD Bytecode_ComRococosoftImprontoBaseband_Acllink_Getremotedevice_V_3205; Code
ROM:10896164                 DCD 0                  ; Handlers
ROM:10896164                 DCD 0                  ; StackMap
ROM:10896164                 DCW 9                  ; ByteCode_length
ROM:10896164                 DCW 3                  ; field_12
ROM:10896164                 DCW 0                  ; Flags_native
ROM:10896164                 DCW 0x9009            ; field_16
ROM:10896164                 DCD Class_ComRococosoftImprontoBaseband_Acllink; Parent_Class
ROM:10896164                 DCD 0x10001            ; field_1C
ROM:10896184 Method_ComRococosoftImprontoBaseband_Acllink_Init_V_1921 DCW 0x13E              ; Method_name
ROM:10896184                                        ; DATA XREF: ROM:108FA380 o
ROM:10896184                 DCW 0x129              ; Method_type
ROM:10896184                 DCD Bytecode_ComRococosoftImprontoBaseband_Acllink_Init_V_1921; Code
ROM:10896184                 DCD 0                  ; Handlers
ROM:10896184                 DCD 0                  ; StackMap
ROM:10896184                 DCW 0x1F              ; ByteCode_length
ROM:10896184                 DCW 3                  ; field_12
ROM:10896184                 DCW 0                  ; Flags_native
ROM:10896184                 DCW 0xD004            ; field_16
ROM:10896184                 DCD Class_ComRococosoftImprontoBaseband_Acllink; Parent_Class
ROM:10896184                 DCD 0x20002            ; field_1C
ROM:108961A4 Method_ComRococosoftImprontoBaseband_Acllink_Getremotedevice_V_9059 DCW 0x9C0              ; Method_name
ROM:108961A4                                        ; DATA XREF: ROM:108FDB44 o
ROM:108961A4                                        ; ROM:108FEFBC o ...
ROM:108961A4                 DCW 0xAC7              ; Method_type
ROM:108961A4                 DCD Bytecode_ComRococosoftImprontoBaseband_Acllink_Getremotedevice_V_9059; Code
ROM:108961A4                 DCD 0                  ; Handlers
ROM:108961A4                 DCD 0                  ; StackMap
ROM:108961A4                 DCW 4                  ; ByteCode_length
ROM:108961A4                 DCW 1                  ; field_12
ROM:108961A4                 DCW 0                  ; Flags_native
ROM:108961A4                 DCW 0x9001            ; field_16
ROM:108961A4                 DCD Class_ComRococosoftImprontoBaseband_Acllink; Parent_Class
ROM:108961A4                 DCD 0x10001            ; field_1C
ROM:108961C4 Method_ComRococosoftImprontoBaseband_Acllink_Getremoteaddress__2886 DCW 0x128E            ; Method_name
ROM:108961C4                                        ; DATA XREF: ROM:108F44C4 o
ROM:108961C4                                        ; ROM:108FA380 o ...
ROM:108961C4                 DCW 0x23E              ; Method_type
ROM:108961C4                 DCD Bytecode_ComRococosoftImprontoBaseband_Acllink_Getremoteaddress__2886; Code
ROM:108961C4                 DCD 0                  ; Handlers
ROM:108961C4                 DCD 0                  ; StackMap
ROM:108961C4                 DCW 7                  ; ByteCode_length
ROM:108961C4                 DCW 1                  ; field_12
ROM:108961C4                 DCW 0                  ; Flags_native
ROM:108961C4                 DCW 0x9001            ; field_16
ROM:108961C4                 DCD Class_ComRococosoftImprontoBaseband_Acllink; Parent_Class
ROM:108961C4                 DCD 0x10001            ; field_1C
ROM:108961E4 Method_ComRococosoftImprontoBaseband_Acllink_Isauthenticated_Z_4076 DCW 0xBFB              ; Method_name
ROM:108961E4                                        ; DATA XREF: ROM:108F44C4 o
ROM:108961E4                                        ; ROM:10901E58 o
ROM:108961E4                 DCW 0x15A              ; Method_type
ROM:108961E4                 DCD 0                  ; Code
ROM:108961E4                 DCD 0                  ; Handlers
ROM:108961E4                 DCD 0                  ; StackMap
ROM:108961E4                 DCW 0                  ; ByteCode_length
ROM:108961E4                 DCW 0                  ; field_12
ROM:108961E4                 DCW 0                  ; Flags_native
ROM:108961E4                 DCW 0x401              ; field_16
ROM:108961E4                 DCD Class_ComRococosoftImprontoBaseband_Acllink; Parent_Class
ROM:108961E4                 DCD 1                  ; field_1C
ROM:10896204 Method_ComRococosoftImprontoBaseband_Acllink_Isencrypted_Z_4076 DCW 0xFDA              ; Method_name
ROM:10896204                                        ; DATA XREF: ROM:108F44C4 o
ROM:10896204                                        ; ROM:10901E58 o
ROM:10896204                 DCW 0x15A              ; Method_type
ROM:10896204                 DCD 0                  ; Code
ROM:10896204                 DCD 0                  ; Handlers
ROM:10896204                 DCD 0                  ; StackMap
ROM:10896204                 DCW 0                  ; ByteCode_length
ROM:10896204                 DCW 0                  ; field_12
ROM:10896204                 DCW 0                  ; Flags_native
ROM:10896204                 DCW 0x401              ; field_16
ROM:10896204                 DCD Class_ComRococosoftImprontoBaseband_Acllink; Parent_Class
ROM:10896204                 DCD 1                  ; field_1C
ROM:10896224 Method_ComRococosoftImprontoBaseband_Acllink_Authenticate_Z_4076 DCW 0x140B            ; Method_name
ROM:10896224                                        ; DATA XREF: ROM:10901E58 o
ROM:10896224                 DCW 0x15A              ; Method_type
ROM:10896224                 DCD Bytecode_ComRococosoftImprontoBaseband_Acllink_Authenticate_Z_4076; Code
ROM:10896224                 DCD 0                  ; Handlers
ROM:10896224                 DCD StackMap_ComRococosoftImprontoBaseband_Acllink_Authenticate_Z_4076; StackMap
ROM:10896224                 DCW 0x12              ; ByteCode_length
ROM:10896224                 DCW 1                  ; field_12
ROM:10896224                 DCW 0                  ; Flags_native
ROM:10896224                 DCW 0x1001            ; field_16
ROM:10896224                 DCD Class_ComRococosoftImprontoBaseband_Acllink; Parent_Class
ROM:10896224                 DCD 0x10001            ; field_1C
ROM:10896244 Method_ComRococosoftImprontoBaseband_Acllink_Stackauthenticate_Z_4076 DCW 0x1165            ; Method_name
ROM:10896244                                        ; DATA XREF: ROM:108F44C4 o
ROM:10896244                 DCW 0x15A              ; Method_type
ROM:10896244                 DCD 0                  ; Code
ROM:10896244                 DCD 0                  ; Handlers
ROM:10896244                 DCD 0                  ; StackMap
ROM:10896244                 DCW 0                  ; ByteCode_length
ROM:10896244                 DCW 0                  ; field_12
ROM:10896244                 DCW 0                  ; Flags_native
ROM:10896244                 DCW 0x404              ; field_16
ROM:10896244                 DCD Class_ComRococosoftImprontoBaseband_Acllink; Parent_Class
ROM:10896244                 DCD 1                  ; field_1C
ROM:10896264 Method_ComRococosoftImprontoBaseband_Acllink_Encrypt_Zz_1245 DCW 0xF25              ; Method_name
ROM:10896264                                        ; DATA XREF: ROM:10901E58 o
ROM:10896264                 DCW 0x141B            ; Method_type
ROM:10896264                 DCD Bytecode_ComRococosoftImprontoBaseband_Acllink_Encrypt_Zz_1245; Code
ROM:10896264                 DCD 0                  ; Handlers
ROM:10896264                 DCD StackMap_ComRococosoftImprontoBaseband_Acllink_Encrypt_Zz_1245; StackMap
ROM:10896264                 DCW 0x55              ; ByteCode_length
ROM:10896264                 DCW 4                  ; field_12
ROM:10896264                 DCW 0                  ; Flags_native
ROM:10896264                 DCW 0x1001            ; field_16
ROM:10896264                 DCD Class_ComRococosoftImprontoBaseband_Acllink; Parent_Class
ROM:10896264                 DCD 0x40003            ; field_1C
ROM:10896284 Method_ComRococosoftImprontoBaseband_Acllink_Decrypt_Z_6596 DCW 0x11DF            ; Method_name
ROM:10896284                                        ; DATA XREF: ROM:108F44C4 o
ROM:10896284                 DCW 0x1290            ; Method_type
ROM:10896284                 DCD Bytecode_ComRococosoftImprontoBaseband_Acllink_Decrypt_Z_6596; Code
ROM:10896284                 DCD 0                  ; Handlers
ROM:10896284                 DCD StackMap_ComRococosoftImprontoBaseband_Acllink_Decrypt_Z_6596; StackMap
ROM:10896284                 DCW 0x1F              ; ByteCode_length
ROM:10896284                 DCW 2                  ; field_12
ROM:10896284                 DCW 0                  ; Flags_native
ROM:10896284                 DCW 0x1002            ; field_16
ROM:10896284                 DCD Class_ComRococosoftImprontoBaseband_Acllink; Parent_Class
ROM:10896284                 DCD 0x20002            ; field_1C
ROM:108962A4 Method_ComRococosoftImprontoBaseband_Acllink_Stackencrypt_Zz_8280 DCW 0x1917            ; Method_name
ROM:108962A4                                        ; DATA XREF: ROM:108F44C4 o
ROM:108962A4                 DCW 0x6B5              ; Method_type
ROM:108962A4                 DCD 0                  ; Code
ROM:108962A4                 DCD 0                  ; Handlers
ROM:108962A4                 DCD 0                  ; StackMap
ROM:108962A4                 DCW 0                  ; ByteCode_length
ROM:108962A4                 DCW 0                  ; field_12
ROM:108962A4                 DCW 0                  ; Flags_native
ROM:108962A4                 DCW 0x404              ; field_16
ROM:108962A4                 DCD Class_ComRococosoftImprontoBaseband_Acllink; Parent_Class
ROM:108962A4                 DCD 2                  ; field_1C
ROM:108962C4 Method_ComRococosoftImprontoBaseband_Acllink_Addconnection_V_6411 DCW 0x11F5            ; Method_name
ROM:108962C4                 DCW 0x118C            ; Method_type
ROM:108962C4                 DCD Bytecode_ComRococosoftImprontoBaseband_Acllink_Addconnection_V_6411; Code
ROM:108962C4                 DCD 0                  ; Handlers
ROM:108962C4                 DCD 0                  ; StackMap
ROM:108962C4                 DCW 8                  ; ByteCode_length
ROM:108962C4                 DCW 2                  ; field_12
ROM:108962C4                 DCW 0                  ; Flags_native
ROM:108962C4                 DCW 0xD001            ; field_16
ROM:108962C4                 DCD Class_ComRococosoftImprontoBaseband_Acllink; Parent_Class
ROM:108962C4                 DCD 0x20002            ; field_1C
ROM:108962E4 Method_ComRococosoftImprontoBaseband_Acllink_Removeconnection_V_6411 DCW 0x12AE            ; Method_name
ROM:108962E4                                        ; DATA XREF: ROM:108FFA30 o
ROM:108962E4                 DCW 0x118C            ; Method_type
ROM:108962E4                 DCD Bytecode_ComRococosoftImprontoBaseband_Acllink_Removeconnection_V_6411; Code
ROM:108962E4                 DCD 0                  ; Handlers
ROM:108962E4                 DCD StackMap_ComRococosoftImprontoBaseband_Acllink_Removeconnection_V_6411; StackMap
ROM:108962E4                 DCW 0x25              ; ByteCode_length
ROM:108962E4                 DCW 2                  ; field_12
ROM:108962E4                 DCW 0                  ; Flags_native
ROM:108962E4                 DCW 0xD001            ; field_16
ROM:108962E4                 DCD Class_ComRococosoftImprontoBaseband_Acllink; Parent_Class
ROM:108962E4                 DCD 0x20002            ; field_1C
ROM:10896304 Method_ComRococosoftImprontoBaseband_Acllink_Connections_Y_7255 DCW 0xC6F              ; Method_name
ROM:10896304                 DCW 0x79E              ; Method_type
ROM:10896304                 DCD Bytecode_ComRococosoftImprontoBaseband_Acllink_Connections_Y_7255; Code
ROM:10896304                 DCD 0                  ; Handlers
ROM:10896304                 DCD 0                  ; StackMap
ROM:10896304                 DCW 7                  ; ByteCode_length
ROM:10896304                 DCW 1                  ; field_12
ROM:10896304                 DCW 0                  ; Flags_native
ROM:10896304                 DCW 0x9001            ; field_16
ROM:10896304                 DCD Class_ComRococosoftImprontoBaseband_Acllink; Parent_Class
ROM:10896304                 DCD 0x10001            ; field_1C
ROM:10896324 Method_ComRococosoftImprontoBaseband_Acllink_Ismaster_Z_4076 DCW 0x17A8            ; Method_name
ROM:10896324                                        ; DATA XREF: ROM:108FFA30 o
ROM:10896324                 DCW 0x15A              ; Method_type
ROM:10896324                 DCD 0                  ; Code
ROM:10896324                 DCD 0                  ; Handlers
ROM:10896324                 DCD 0                  ; StackMap
ROM:10896324                 DCW 0                  ; ByteCode_length
ROM:10896324                 DCW 0                  ; field_12
ROM:10896324                 DCW 0                  ; Flags_native
ROM:10896324                 DCW 0x401              ; field_16
ROM:10896324                 DCD Class_ComRococosoftImprontoBaseband_Acllink; Parent_Class
ROM:10896324                 DCD 1                  ; field_1C
ROM:10896344 Method_ComRococosoftImprontoBaseband_Acllink_Close_V_3913 DCW 0x10A              ; Method_name
ROM:10896344                                        ; DATA XREF: ROM:108FE688 o
ROM:10896344                 DCW 0x156              ; Method_type
ROM:10896344                 DCD Bytecode_ComRococosoftImprontoBaseband_Acllink_Close_V_3913; Code
ROM:10896344                 DCD 0                  ; Handlers
ROM:10896344                 DCD 0                  ; StackMap
ROM:10896344                 DCW 1                  ; ByteCode_length
ROM:10896344                 DCW 0                  ; field_12
ROM:10896344                 DCW 0                  ; Flags_native
ROM:10896344                 DCW 0xD001            ; field_16
ROM:10896344                 DCD Class_ComRococosoftImprontoBaseband_Acllink; Parent_Class
ROM:10896344                 DCD 0x10001            ; field_1C


Внимание: Теперь назад не переходим.
Теперь надо описывать каждый метод.
У каждого метода есть 3 поля Bytecode, Handlers, и StackMap, и их надо выписывать в порядке

Код

Bytecode первого метода

Handlers первого метода

StackMap первого метода

Bytecode второго метода

Handlers второго метода

StackMap второго метода
И т.д.


Если на месте поля стоит 0, то его нет, и копировать ничего не надо.
Переход в эти поля осуществляется аналогично, двойным нажатием. Выход так жа нажатием на соответствующую строку.

Код

ROM:107E5028 Bytecode_ComRococosoftImprontoBaseband_Acllink_Getremotedevice_V_3205 DCB 0xDA, 0, 1, 0x59, 0x2A, 0xD7, 0, 2, 0xB0
ROM:107E5028                                        ; DATA XREF: ROM:Method_ComRococosoftImprontoBaseband_Acllink_Getremotedevice_V_3205 o
ROM:107E5031                 ALIGN 4

ROM:107E5034 Bytecode_ComRococosoftImprontoBaseband_Acllink_Init_V_1921 DCB 0x2A, 0xDA, 0, 3, 0x59, 0xD7, 0, 4, 0xCE, 0, 1, 0x2A
ROM:107E5034                                        ; DATA XREF: ROM:Method_ComRococosoftImprontoBaseband_Acllink_Init_V_1921 o
ROM:107E5034                 DCB 0xDA, 0, 3, 0x59, 0xD7, 0, 4, 0xCE, 0, 2, 0x2A, 0x2B
ROM:107E5034                 DCB 0xD8, 0, 5, 0xCE, 0, 0, 0xB1
ROM:107E5053                 ALIGN 4

ROM:107E5054 Bytecode_ComRococosoftImprontoBaseband_Acllink_Getremotedevice_V_9059 DCB 0xEB, 0, 0, 0xB0
ROM:107E5054                                        ; DATA XREF: ROM:Method_ComRococosoftImprontoBaseband_Acllink_Getremotedevice_V_9059 o

ROM:107E5058 Bytecode_ComRococosoftImprontoBaseband_Acllink_Getremoteaddress__2886 DCB 0xEB, 0, 0, 0xCC, 0, 0, 0xB0
ROM:107E5058                                        ; DATA XREF: ROM:Method_ComRococosoftImprontoBaseband_Acllink_Getremoteaddress__2886 o
ROM:107E505F                 ALIGN 4

ROM:107E5060 Bytecode_ComRococosoftImprontoBaseband_Acllink_Authenticate_Z_4076 DCB 0x2A, 0xD6, 5, 0xAD, 0x9A, 0, 0xA, 0x2A, 0xD6, 5, 0xAE
ROM:107E5060                                        ; DATA XREF: ROM:Method_ComRococosoftImprontoBaseband_Acllink_Authenticate_Z_4076 o
ROM:107E5060                 DCB 0x99, 0, 5, 4, 0xAC, 3, 0xAC
ROM:107E5072                 ALIGN 4

ROM:1087E51E StackMap_ComRococosoftImprontoBaseband_Acllink_Authenticate_Z_4076 DCB 0x80
ROM:1087E51E                                        ; DATA XREF: ROM:Method_ComRococosoftImprontoBaseband_Acllink_Authenticate_Z_4076 o
ROM:1087E51F                 DCB 3
ROM:1087E520                 DCD 0xE0100
ROM:1087E524                 DCW 0x10, 0x100        ; field_0
ROM:1087E528                 DCW 0x1011, 0x100      ; field_0

ROM:107E5074 Bytecode_ComRococosoftImprontoBaseband_Acllink_Encrypt_Zz_1245 DCB 0x2A, 0xD6, 5, 0xAF, 0x4E, 0xEE, 8, 0, 0x28, 0x2A
ROM:107E5074                                        ; DATA XREF: ROM:Method_ComRococosoftImprontoBaseband_Acllink_Encrypt_Zz_1245 o
ROM:107E5074                 DCB 0xD6, 5, 0xB0, 0x9A, 0, 0xD, 0x2A, 4, 0xD6, 5, 0xB1
ROM:107E5074                 DCB 0x9A, 0, 5, 3, 0xAC, 0xEB, 0, 2, 0x2B, 0xD6, 5, 0xB2
ROM:107E5074                 DCB 0x9A, 0, 0x32, 0xEB, 0, 2, 0x2B, 0xD6, 5, 0xB3, 0xA7
ROM:107E5074                 DCB 0, 0x28, 0x2A, 0xD6, 5, 0xB4, 0x99, 0, 0x21, 0xD8
ROM:107E5074                 DCB 0, 0xD, 0xD6, 5, 0xB5, 0xD6, 5, 0xB6, 6, 0xA0, 0, 0xE
ROM:107E5074                 DCB 0xDA, 0, 0x10, 0x59, 5, 0x12, 0x11, 0xD7, 0, 0x12
ROM:107E5074                 DCB 0xBF, 0x2A, 0x2B, 0xD7, 0, 0x13, 0xAC, 4, 0xAC
ROM:107E50C9                 ALIGN 4

ROM:1087E52C StackMap_ComRococosoftImprontoBaseband_Acllink_Encrypt_Zz_1245 DCB 0x80
ROM:1087E52C                                        ; DATA XREF: ROM:Method_ComRococosoftImprontoBaseband_Acllink_Encrypt_Zz_1245 o
ROM:1087E52D                 DCB 4
ROM:1087E52E                 DCD 0x1A0B00
ROM:1087E532                 DCW 0x2E, 0xB00        ; field_0
ROM:1087E536                 DCW 0x4D, 0xB00        ; field_0
ROM:1087E53A                 DCW 0x53, 0xB00        ; field_0

ROM:107E50CC Bytecode_ComRococosoftImprontoBaseband_Acllink_Decrypt_Z_6596 DCB 0xEB, 0, 2, 0x2B, 0xD6, 5, 0xB7, 0x99, 0, 0x16, 0xEB
ROM:107E50CC                                        ; DATA XREF: ROM:Method_ComRococosoftImprontoBaseband_Acllink_Decrypt_Z_6596 o
ROM:107E50CC                 DCB 0, 2, 0xD6, 5, 0xB8, 0x99, 0, 0xD, 0x2A, 3, 0xD6, 5
ROM:107E50CC                 DCB 0xB9, 0x99, 0, 5, 4, 0xAC, 3, 0xAC
ROM:107E50EB                 ALIGN 4

ROM:1087E53E StackMap_ComRococosoftImprontoBaseband_Acllink_Decrypt_Z_6596 DCB 0x80
ROM:1087E53E                                        ; DATA XREF: ROM:Method_ComRococosoftImprontoBaseband_Acllink_Decrypt_Z_6596 o
ROM:1087E53F                 DCB 2
ROM:1087E540                 DCD 0x1D0300
ROM:1087E544                 DCW 0x101E, 0x300      ; field_0

ROM:107E50EC Bytecode_ComRococosoftImprontoBaseband_Acllink_Addconnection_V_6411 DCB 0xEB, 0, 1, 0x2B, 0xD6, 5, 0xBA, 0xB1
ROM:107E50EC                                        ; DATA XREF: ROM:Method_ComRococosoftImprontoBaseband_Acllink_Addconnection_V_6411 o

ROM:107E50F4 Bytecode_ComRococosoftImprontoBaseband_Acllink_Removeconnection_V_6411 DCB 0x2A, 0x2B, 0xD7, 0, 0x13, 0x57, 0xEB, 0, 1, 0x2B
ROM:107E50F4                                        ; DATA XREF: ROM:Method_ComRococosoftImprontoBaseband_Acllink_Removeconnection_V_6411 o
ROM:107E50F4                 DCB 0xD6, 5, 0xBB, 0x57, 0xEB, 0, 1, 0xD6, 5, 0xBC, 0x9A
ROM:107E50F4                 DCB 0, 0x10, 0xD8, 0, 0xD, 0xD6, 5, 0xBD, 0x2A, 0xD6, 5
ROM:107E50F4                 DCB 0xBE, 0xD6, 5, 0xBF, 0xB1
ROM:107E5119                 ALIGN 4

ROM:1087E548 StackMap_ComRococosoftImprontoBaseband_Acllink_Removeconnection_V_6411 DCB 0x80
ROM:1087E548                                        ; DATA XREF: ROM:Method_ComRococosoftImprontoBaseband_Acllink_Removeconnection_V_6411 o
ROM:1087E549                 DCB 1
ROM:1087E54A                 DCD 0x240300

ROM:107E511C Bytecode_ComRococosoftImprontoBaseband_Acllink_Connections_Y_7255 DCB 0xEB, 0, 1, 0xD6, 5, 0xC0, 0xB0
ROM:107E511C                                        ; DATA XREF: ROM:Method_ComRococosoftImprontoBaseband_Acllink_Connections_Y_7255 o
ROM:107E5123                 ALIGN 4

ROM:107E5124 Bytecode_ComRococosoftImprontoBaseband_Acllink_Close_V_3913 DCB 0xB1
ROM:107E5124                                        ; DATA XREF: ROM:Method_ComRococosoftImprontoBaseband_Acllink_Close_V_3913 o
ROM:107E5125                 ALIGN 4


Переходим назад нажатием на название класса которое находится под названием группы методов. Короче как и раньше.

Вот мы и в самом начале. Текущий txt нужно сохранить, желательно под именем класса.


Теперь переходим к следующему классу. Например com.rococosoft.impronto.baseband.AclLink$PeerDevice. В поиске Иды пишем Class_ComRococosoftImprontoBaseband_AcllinkPeerdevice (опять же не спрашивайте почему).

Здесь всё тоже самое, только тут нету поля Полей (Fields), тоесть тут их вообще нет и выписывать их не надо. Кстати этот класс маленький, тут всего 1 метод.

Далее возьмём класс com.rococosoft.impronto.discovery.BlockingDiscoveryListener. В поиске Class_ComRococosoftImprontoDiscovery_Blockingdiscoverylistener.
Начало делается также, но тут у класса новое поле интерфейса (Interface), находящееся ниже методов. Выглядит так:

Код

ROM:1090B066 Interface_ComRococosoftImprontoDiscovery_Blockingdiscoverylistener DCW 1
ROM:1090B066                                        ; DATA XREF: EXTRAM:Class_ComRococosoftImprontoDiscovery_Blockingdiscoverylistener o
ROM:1090B068                 DCW 0xB


Копируем в txt и сохраняем.

Теперь у нас есть 3 txt файла с телами классов. Обрабатываем их прогой ClassCleaner от azt59. Скачать можно с его сайта Сайт Atz59 или по ссылке ClassCleaner. Эта прога удаляет адреса типа EXTRAM:127A32C0 или ROM:108F44C4, а так же строчки типа ; DATA XREF: ROM:Method_ComRococosoftImprontoBaseband_Acllink_Getremotedevice_V_3205 o.
Вот краткий мануал по пользованию программой от самого azt59:

Цитата
Вот мануал (на случай если с ручками проблемы :-)):
1---Кидаешь все свои тексты в одну папку.
2---Запускаешь прогу и в левой её части находишь эту папку.
3---Жмёшь Go
4---Всё готово. Твои тексты(отредактированные) лежат в папке Папка_с_твоими_текстами\ClassCleaner\


Теперь ещё одно палево, надо чтобы все имена были сначала строки. После обработки прогой сами посмотрите, там у некоторых строк надо удалить один пробел который отделяет писанину от начала строки.

Теперь полученные классы нужно упорядочить. Короче сначала упорядочим классы по алфавиту. Это будет в таком порядке:
1. com.rococosoft.impronto.baseband.AclLink
2. com.rococosoft.impronto.baseband.AclLink$PeerDevice
3. com.rococosoft.impronto.discovery.BlockingDiscoveryListener
Упорядочить это значит чтобы в поле Next первого класса был прописан второй класс, и т.д. В поле Next последнего класса должен быть 0.

IMG7

Получившиеся txt-файлы полностью готовы. Но это ещё не всё. Продолжение ниже, а пока некоторые примечания:
1. Не пугайтесь красных строчек которые иногда попадаются. (поймёте когда встретите)
2. Иногда попадаются поля unk_xxxxxx и off_xxxxxx, их описывать не надо. Как объяснил Vilko

Цитата
это как раз самое главное в яве - натив-код (процедуры взаимодействия с системой)


Пойдём дальше. У каждого класса есть ещё по 2 поля типа jstr_xxxxxxx. Так вот эти поля от каждого класса надо вынести один отдельный файл (Система входа выхода та же). У некоторых классов первое поле jstr_xxxxxxx одинаковое, повторять его не надо. Короче если не поняли так – смотрите прикреплённые примеры. Полученный txt файл надо так же прогнать через прогу от azt59, и избавить от лишних пробелов. Далее видите поле EXPORT? Его трудно не заметить, короче его надо исправить подобно полю Next, то есть вписать туда следующий jstr_. У последнего jstr_ надо также поставить 0.

В остальном надо уже знать программирование, надо компилировать классы и вгонять их в прошивку, это могут только профи.

Ну вот в принципе и всё. Не посчитайте этот мануал бесполезным, так как если Vilko согласится внедрить классы 3D, а я не смогу сидеть за компом, этот мануал будет полезным.

Примеры прикрепляю.

Ещё не успел доделать, в теме уже ответили :) . Если что пишите что непонятно, так-же пишите баги, ссылки там битые и т.д.
Прикрепленное изображение Прикрепленное изображение Прикрепленное изображение Прикрепленное изображение Прикрепленное изображение Прикрепленное изображение Прикрепленное изображение
Прикрепленный файл com.rococosoft.impronto.baseband.AclLink.txt   ( 17.91 килобайт ) Кол-во скачиваний: 96
Прикрепленный файл com.rococosoft.impronto.baseband.AclLink_PeerDevice.txt   ( 2.08 килобайт ) Кол-во скачиваний: 459
Прикрепленный файл com.rococosoft.impronto.discovery.BlockingDiscoveryListener.txt   ( 11.18 килобайт ) Кол-во скачиваний: 473
Прикрепленный файл jstr_.txt   ( 1.56 килобайт ) Кол-во скачиваний: 444
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 20.11.2008, 15:27


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



тема перемещена из-за удаления раздела FAQ (Мануалы/Инструкции/Статьи)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Вытаскивание Классов Из Прошивки · Ломаем и строим! · Forum
 

Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 4.8.2025, 21:49

Форум живёт: