PDA

Просмотр полной версии : lsd.jxe / rom.classes



unbe
30.09.2014, 12:47
Кто-нибудь уже разбирал кишки rom.classes? Неужели я первый? Вопросы на форуме есть, а ответов нет.

Кусок для затравки с каким-то VIN внутри:

Name: run
Signature: ()V
Access Flags (30001): public (vtable)


0 ldc2lw 26 (long) 0x00000000000007D0
3 invokestatic 7 java/lang/Thread.sleep(J)V
6 goto 14
9 pop
10 invokestatic 8 java/lang/Thread.interrupted()Z
13 pop
14 aload0getfield
15 getfield 14 de/audi/tghu/redengineering/app/g.c Lde/audi/tghu/redengineering/app/FSCViewer;
18 new 25 org/dsi/ifc/cryptomanagerhmi/SFscDetails
21 dup
22 aload0getfield
23 getfield 15 de/audi/tghu/redengineering/app/g.a Lorg/dsi/ifc/cryptomanagerhmi/SFscStatus;
26 invokevirtual 17 org/dsi/ifc/cryptomanagerhmi/SFscStatus.getSwid()I
29 aload0getfield
30 getfield 15 de/audi/tghu/redengineering/app/g.a Lorg/dsi/ifc/cryptomanagerhmi/SFscStatus;
33 invokevirtual 18 org/dsi/ifc/cryptomanagerhmi/SFscStatus.getState()I
36 aload0getfield
37 getfield 14 de/audi/tghu/redengineering/app/g.c Lde/audi/tghu/redengineering/app/FSCViewer;
40 aload0getfield
41 getfield 16 de/audi/tghu/redengineering/app/g.b I
44 invokestatic 12 de/audi/tghu/redengineering/app/FSCViewer.a(Lde/audi/tghu/redengineering/app/FSCViewer;I)Z
47 ifeq 56
50 sipush 128
53 goto 57
56 iconst0
57 i2s
58 aload0getfield
59 getfield 14 de/audi/tghu/redengineering/app/g.c Lde/audi/tghu/redengineering/app/FSCViewer;
62 aload0getfield
63 getfield 16 de/audi/tghu/redengineering/app/g.b I
66 invokestatic 12 de/audi/tghu/redengineering/app/FSCViewer.a(Lde/audi/tghu/redengineering/app/FSCViewer;I)Z
69 ifeq 77
72 ldc 1 (java.lang.String) "WAUZZZ8K99A123456
74 goto 79
77 ldc 2 (java.lang.String) "---
79 aload0getfield
84 getfield 16 de/audi/tghu/redengineering/app/g.b I
87 invokestatic 12 de/audi/tghu/redengineering/app/FSCViewer.a(Lde/audi/tghu/redengineering/app/FSCViewer;I)Z
90 ifeq 98
93 ldc 3 (java.lang.String) "200806231015+0100
95 goto 100
98 ldc 2 (java.lang.String) "---
100 invokespecial 21 org/dsi/ifc/cryptomanagerhmi/SFscDetails.<init>(IISLjava/lang/String;Ljava/lang/String;)V
103 invokevirtual 19 de/audi/tghu/redengineering/app/FSCViewer.fscDetails(Lorg/dsi/ifc/cryptomanagerhmi/SFscDetails;)V
106 return0
107 nop

zerbino
01.10.2014, 01:50
а как вообще дебажить ром класес?
т.е. так перевести его в код как выше?
я его давно видел, но как копать - понятия не имею

unbe
02.10.2014, 17:32
а как вообще дебажить ром класес?
т.е. так перевести его в код как выше?
я его давно видел, но как копать - понятия не имею

Простого способа я не нашёл, только два сложных, в обоих надо писать свой код.

Способ 1: самому разбирать файл. Формат частично гуглится по "J9ROMImageHeader", но есть непонятные места.
Способ 2: в библиотеках J9 SDK есть функции, которые могут дампить классы из rom.classes. Самому надо написать обвязку, правильно всё инициализировать и вызвать.

Я прошёл оба варианта. Если есть планы его патчить в бинарном виде, то лучше идти первым путём, там понятно где конкретно что в файле лежит. Вторым путём получается больше информации, но нет конкретных смещений в файле и нужны куски J9 SDK.

zerbino
29.12.2014, 13:54
Наработками не поделитесь?)

unbe
02.01.2015, 23:29
У меня, к сожалению, совсем нет времени приводить их в удобный вид, документировать и т.д. :(
Поделюсь в "сыром" виде:

Способ 1: https://github.com/unbe/romclasses-py
Способ 2: https://github.com/unbe/romclasses-c

Если будут вопросы, постараюсь ответить.

SkyFlyer
10.08.2016, 13:23
Вопрос такой: как это запустить? Что дополнительно скачать и установить?