Житель Клуба
Имя: Константин
Авто: Outlander XL new, 2.4 CVT
Сообщений: 101
|
Re: FAQ по штатной MMCS (Все вопросы в одной теме)
Вобщем, чтоб не искали то, чего нет, (например ssh у злооси)
Начинаю по порядку (чтобы окончательно преевратить ветку в притон хакеров)
Код:
.text:00024010 ; =============== S U B R O U T I N E =======================================
.text:00024010
.text:00024010 ; r14- указатель на кучу 1228
.text:00024010 ; r15- стек данных
.text:00024010 ; функция получает первым параметром (r4) указатель на класс!
.text:00024010
.text:00024010 sub_24010: ; CODE XREF: .text:00023B74p
.text:00024010 ; DATA XREF: .text:off_23CC0o
.text:00024010 mov.l r14, @-r15
.text:00024012 mov.l r8, @-r15
.text:00024014 mov.l r9, @-r15
.text:00024016 mov.l r10, @-r15
.text:00024018 mov.l r11, @-r15
.text:0002401A mov.l r12, @-r15
.text:0002401C mov.l r13, @-r15
.text:0002401E sts.l pr, @-r15
.text:00024020 mov.w @(h'140,pc), r1 ; [00024164] = h'FFFFFB34
.text:00024022 add r1, r15
.text:00024024 mov r15, r14 ; то r14- указатель на кучу- пока все согласно злоsdn!
.text:00024026 add #-h'5C, r15
.text:00024028 mov r4, r9
.text:0002402A mov.l @(h'320,pc), r5 ; [0002434C] = h'5011309
.text:0002402C mov.l @(h'320,pc), r3 ; [00024350] = sub_1D988 ; проверка параметров со смещениям от r4 -читай свойств
.text:0002402C ; ограничения по нм и условный вызов в/функции
.text:0002402E jsr @r3 ; sub_1D988
.text:00024030 nop
.text:00024032 mov.l @(h'320,pc), r3 ; [00024354] = sub_1D914 ; превращение в asciiцифру параметра со смещением 0x34
.text:00024032 ; и инкремент счетчика со смещением 0
.text:00024034 jsr @r3 ; sub_1D914
.text:00024036 mov r9, r4 ; мусор !!
.text:00024038 mov #-h'74, r4
.text:0002403A mov.l @(h'31C,pc), r3 ; [00024358] = _memset ; на первый взгляд ничего интересного- обычная инициализация
.text:0002403C extu.b r4, r4 ; атавизм сей - отрицательное число и так задано константно
.text:0002403E mov #h'3C, r6
.text:00024040 mov #0, r5
.text:00024042 jsr @r3 ; _memset ; заполняет 0-ми поле размером 0x3c начиная с АБСОЛЮТНОГО! адреса -0x74
.text:00024042 ; те 0xFFFFFF8C те железо - буфер контроллера связи ?
.text:00024044 add r14, r4 ; мусор !!!! или специально вводят в заблуждение :)
.text:00024046 mov #h'18, r4
.text:00024048 mov.l @(h'30C,pc), r3 ; [00024358] = _memset
.text:0002404A mov #h'3C, r6
.text:0002404C mov #0, r5
.text:0002404E jsr @r3 ; _memset ; опять memset по абсолютному адресу 0x18
.text:0002404E ; и длиной опять 0x3c
.text:00024050 add r15, r4 ; по странному стечению обстоятельств
.text:00024050 ; осмысленная информация в ключе как раз 0x3c
.text:00024050 ; а может и строчный буфер ?
.text:00024052 mov #h'1C, r8
.text:00024054 mov.l @(h'300,pc), r3 ; [00024358] = _memset
.text:00024056 add r14, r8
.text:00024058 mov #h'20, r6
.text:0002405A mov #0, r5
.text:0002405C jsr @r3 ; _memset ; memset возвращает тот же указатель, что и получила
.text:0002405C ; то еще раз заполняется область длиной 0x20 тоже 0-ми
.text:0002405E mov r8, r4 ; мусор
.text:00024060 mov #-h'48, r3
.text:00024062 mov r9, r10
.text:00024064 extu.b r3, r3
.text:00024066 add r3, r10 ; то в r10 оказывается указатель на класс-0x48 странно! - отрицательное смещение!
.text:00024068 mov.l @(h'2F0,pc), r3 ; [0002435C] = _strncpy
.text:0002406A mov.l @r10, r5 ; из которого получаем указатель на строку-источник
.text:0002406C mov #h'20, r6 ; длина строки 0x20
.text:0002406E add #h'48, r5 ; указатель на сторку источник +0x48 странная арифметика
.text:00024070 jsr @r3 ; _strncpy ; в результате строка длинной 0x20 копируется по r4 те абс адресу 0x18
.text:00024072 mov r8, r4
.text:00024074 mov.w @(h'EE,pc), r12 ; [00024166] = h'2CC
.text:00024076 mov.l @r10, r13 ; те в r13 помещается указатель на строку
.text:00024078 add r14, r12 ; в r12 теперь указатель на кучу+ 0x2cc
.text:0002407A mov.l @(h'2E4,pc), r5 ; [00024360] = aApmApm_protect ; выводим <APM-> < APM_ProtectKeyCheck: System Key[ >
.text:0002407A ;
.text:0002407C mov.l @(h'2E4,pc), r3 ; [00024364] = _wsprintfW
.text:0002407E add #h'69, r13 ; на что он указывает после этого - уже сложно понять
.text:00024080 jsr @r3 ; _wsprintfW
.text:00024082 mov r12, r4 ; мусор
.text:00024084 mov #-h'34, r11
.text:00024086 mov.l @(h'2E0,pc), r5 ; [00024368] = aApmHex ; сообщ<APM-> h'3E HEX[ >
.text:00024086 ;
.text:00024088 extu.b r11, r11
.text:0002408A mov.l @(h'2D8,pc), r3 ; [00024364] = _wsprintfW
.text:0002408C add r14, r11 ; в r11 куча-0x34
.text:0002408E jsr @r3 ; _wsprintfW
.text:00024090 mov r11, r4 ; мусор
.text:00024092 mov #-h'80, r0
.text:00024094 mov r11, r3
.text:00024096 extu.b r0, r0
.text:00024098 mov r12, r4
.text:0002409A add #h'4E, r3
.text:0002409C mov.l r3, @(r0,r14)
.text:0002409E add #h'4E, r4
.text:000240A0 mov #h'7C, r0
.text:000240A2 mov #0, r8
.text:000240A4 bra loc_240AC ; на момент перехода r0=0x7c r3=куча-0ч34+0x4e r4=куча-0x34+0x4e r8=0 r11=куча-0x34 r13=указ на строку+0x69
.text:000240A6 mov.l r4, @(r0,r14) ; тоже мусор!
.text:000240A8 ; ---------------------------------------------------------------------------
из этого следует, что эта чтука после настройки оборудования сразу выводит строку-приглашение
|