Показать сообщение отдельно
Старый 10.12.2010, 20:16   #2329
cvy7
Житель Клуба
 
Имя: Константин
Авто: 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 ; ---------------------------------------------------------------------------
из этого следует, что эта чтука после настройки оборудования сразу выводит строку-приглашение
cvy7 вне форума   Вверх Ответить с цитированием