What's new? | Help | Directory | Sign in
Google
qcbqsanalyzer
Analysis of QC BQS mobiles
  
  
  
  
    
Search
for
Updated Jan 18, 2008 by b...@trash-mail.com
QCSBLFunctions  
Important QCSBL Functions

Load OEMSBL Check and Load AMSS

ROM:02D4C040 30 FF 2F E1                 BLX     R0              ;  02D4C074, go to oemsbl check and init
ROM:02D4C044 00 40 A0 E1                 MOV     R4, R0
ROM:02D4C048 10 0F 11 EE                 MRC     p15, 0, R0,c1,c0
ROM:02D4C04C 80 0D C0 E3                 BIC     R0, R0, #0x2000
ROM:02D4C050 10 0F 01 EE                 MCR     p15, 0, R0,c1,c0
ROM:02D4C054 14 D0 9F E5                 LDR     SP, =0xFFFF2800
ROM:02D4C058 40 D0 4D E2                 SUB     SP, SP, #0x40
ROM:02D4C05C 3C 40 8D E5                 STR     R4, [SP,#0x40+var_4]
ROM:02D4C060 FF FF 9D E8                 LDMFD   SP, {R0-PC}     ; Jump to 0x0, which is AMSS atm :)

AMSS and OEM Check Routine

ROM:02D4E438             check_amss_or_oem                       ; CODE XREF: ROM:02D4CC4Cp
ROM:02D4E438
ROM:02D4E438             var_4C          = -0x4C
ROM:02D4E438             var_38          = -0x38
ROM:02D4E438             var_34          = -0x34
ROM:02D4E438             arg_0           =  0
ROM:02D4E438             arg_4           =  4
ROM:02D4E438             arg_8           =  8
ROM:02D4E438
ROM:02D4E438 F0 4F 2D E9                 STMFD   SP!, {R4-R11,LR}
ROM:02D4E43C 2C D0 4D E2                 SUB     SP, SP, #0x2C
ROM:02D4E440 01 E0 A0 E1                 MOV     LR, R1
ROM:02D4E444 02 80 A0 E1                 MOV     R8, R2
ROM:02D4E448 03 90 A0 E1                 MOV     R9, R3
ROM:02D4E44C C0 11 9F E5                 LDR     R1, =loc_2D50960
ROM:02D4E450 50 60 9D E5                 LDR     R6, [SP,#0x50+arg_0]
ROM:02D4E454 58 50 9D E5                 LDR     R5, [SP,#0x50+arg_8] ; Sha1-Value
ROM:02D4E458 54 70 9D E5                 LDR     R7, [SP,#0x50+arg_4] ; 0x100
ROM:02D4E45C 0C 0C 91 E8                 LDMIA   R1, {R2,R3,R10,R11}
ROM:02D4E460 1C 40 8D E2                 ADD     R4, SP, #0x50+var_34
ROM:02D4E464 0C 0C 84 E8                 STMIA   R4, {R2,R3,R10,R11}
ROM:02D4E468 00 00 5E E3                 CMP     LR, #0
ROM:02D4E46C 00 00 58 13                 CMPNE   R8, #0
ROM:02D4E470 A0 11 9F E5                 LDR     R1, =dword_2D5095C
ROM:02D4E474 00 00 59 13                 CMPNE   R9, #0
ROM:02D4E478 00 00 56 13                 CMPNE   R6, #0
ROM:02D4E47C 00 10 91 E5                 LDR     R1, [R1]
ROM:02D4E480 00 00 57 13                 CMPNE   R7, #0
ROM:02D4E484 00 00 A0 03                 MOVEQ   R0, #0
ROM:02D4E488 01 B0 A0 E3                 MOV     R11, #1
ROM:02D4E48C 00 A0 A0 E3                 MOV     R10, #0
ROM:02D4E490 00 40 A0 E3                 MOV     R4, #0
ROM:02D4E494 18 10 8D E5                 STR     R1, [SP,#0x50+var_38]
ROM:02D4E498 5B 00 00 0A                 BEQ     loc_2D4E60C
ROM:02D4E49C 00 00 55 E3                 CMP     R5, #0
ROM:02D4E4A0 04 20 8D 02                 ADDEQ   R2, SP, #0x50+var_4C
ROM:02D4E4A4 0E 10 A0 01                 MOVEQ   R1, LR
ROM:02D4E4A8 D2 FF FF 0B                 BLEQ    calc_sha_oembl
ROM:02D4E4AC 07 10 A0 E1                 MOV     R1, R7
ROM:02D4E4B0 06 00 A0 E1                 MOV     R0, R6
ROM:02D4E4B4 20 05 00 EB                 BL      rsaroutine
ROM:02D4E4B8 00 60 A0 E1                 MOV     R6, R0
ROM:02D4E4BC 18 00 8D E2                 ADD     R0, SP, #0x50+var_38
ROM:02D4E4C0 0B 10 A0 E1                 MOV     R1, R11
ROM:02D4E4C4 1C 05 00 EB                 BL      rsaroutine
ROM:02D4E4C8 00 70 A0 E1                 MOV     R7, R0
ROM:02D4E4CC 08 00 A0 E1                 MOV     R0, R8
ROM:02D4E4D0 09 10 A0 E1                 MOV     R1, R9
ROM:02D4E4D4 18 05 00 EB                 BL      rsaroutine
ROM:02D4E4D8 00 80 A0 E1                 MOV     R8, R0
ROM:02D4E4DC 00 00 55 E3                 CMP     R5, #0
ROM:02D4E4E0 05 00 A0 11                 MOVNE   R0, R5
ROM:02D4E4E4 04 00 8D 02                 ADDEQ   R0, SP, #0x50+var_4C
ROM:02D4E4E8 14 10 A0 E3                 MOV     R1, #0x14
ROM:02D4E4EC 12 05 00 EB                 BL      rsaroutine
ROM:02D4E4F0 00 90 A0 E1                 MOV     R9, R0
ROM:02D4E4F4 63 00 A0 E3                 MOV     R0, #0x63
ROM:02D4E4F8 00 10 A0 E3                 MOV     R1, #0
ROM:02D4E4FC 48 00 00 EB                 BL      rsaroutine2
ROM:02D4E500 00 00 56 E3                 CMP     R6, #0
ROM:02D4E504 00 00 57 13                 CMPNE   R7, #0
ROM:02D4E508 00 00 58 13                 CMPNE   R8, #0
ROM:02D4E50C 00 00 59 13                 CMPNE   R9, #0
ROM:02D4E510 00 50 A0 E1                 MOV     R5, R0
ROM:02D4E514 00 00 55 13                 CMPNE   R5, #0
ROM:02D4E518 2B 00 00 0A                 BEQ     exit
ROM:02D4E51C 06 30 A0 E1                 MOV     R3, R6
ROM:02D4E520 07 20 A0 E1                 MOV     R2, R7
ROM:02D4E524 08 10 A0 E1                 MOV     R1, R8
ROM:02D4E528 05 00 A0 E1                 MOV     R0, R5
ROM:02D4E52C A9 04 00 EB                 BL      finalrsaroutine
ROM:02D4E530 00 00 50 E3                 CMP     R0, #0
ROM:02D4E534 24 00 00 1A                 BNE     exit
ROM:02D4E538 05 00 A0 E3                 MOV     R0, #5
ROM:02D4E53C 09 30 A0 E3                 MOV     R3, #9
ROM:02D4E540 00 20 A0 E3                 MOV     R2, #0
ROM:02D4E544
ROM:02D4E544             loc_2D4E544                             ; CODE XREF: check_amss_or_oem+130j
ROM:02D4E544 00 C1 95 E7                 LDR     R12, [R5,R0,LSL#2]
ROM:02D4E548 02 10 A0 E1                 MOV     R1, R2
ROM:02D4E54C 1C E0 8D E2                 ADD     LR, SP, #0x50+var_34
ROM:02D4E550 01 11 9E E7                 LDR     R1, [LR,R1,LSL#2]
ROM:02D4E554 01 20 82 E2                 ADD     R2, R2, #1
ROM:02D4E558 01 00 5C E1                 CMP     R12, R1
ROM:02D4E55C 02 00 00 1A                 BNE     loc_2D4E56C
ROM:02D4E560 01 00 80 E2                 ADD     R0, R0, #1
ROM:02D4E564 03 00 50 E1                 CMP     R0, R3
ROM:02D4E568 F5 FF FF 3A                 BCC     loc_2D4E544
ROM:02D4E56C
ROM:02D4E56C             loc_2D4E56C                             ; CODE XREF: check_amss_or_oem+124j
ROM:02D4E56C A8 00 9F E5                 LDR     R0, =aSignal
ROM:02D4E570 00 10 E0 E3                 MOVL    R1, 0xFFFFFFFF
ROM:02D4E574 B0 00 D0 E1                 LDRH    R0, [R0]
ROM:02D4E578 A0 02 81 E0                 ADD     R0, R1, R0,LSR#5
ROM:02D4E57C 03 00 00 EA                 B       jumptocompare
ROM:02D4E580             ; ---------------------------------------------------------------------------
ROM:02D4E580
ROM:02D4E580             loc_2D4E580                             ; CODE XREF: check_amss_or_oem+15Cj
ROM:02D4E580 03 11 95 E7                 LDR     R1, [R5,R3,LSL#2]
ROM:02D4E584 01 00 71 E3                 CMN     R1, #1
ROM:02D4E588 0E 00 00 1A                 BNE     seterrorval     ; return val : error
ROM:02D4E58C 01 30 83 E2                 ADD     R3, R3, #1
ROM:02D4E590
ROM:02D4E590             jumptocompare                           ; CODE XREF: check_amss_or_oem+144j
ROM:02D4E590 00 00 53 E1                 CMP     R3, R0
ROM:02D4E594 F9 FF FF 3A                 BCC     loc_2D4E580
ROM:02D4E598 00 00 5A E3                 CMP     R10, #0
ROM:02D4E59C 00 01 95 07                 LDREQ   R0, [R5,R0,LSL#2]
ROM:02D4E5A0 78 10 9F 05                 LDREQ   R1, =0x1FFFF
ROM:02D4E5A4 01 00 50 01                 CMPEQ   R0, R1
ROM:02D4E5A8 06 00 00 1A                 BNE     seterrorval     ; return val : error
ROM:02D4E5AC 14 20 A0 E3                 MOV     R2, #0x14
ROM:02D4E5B0 05 10 A0 E1                 MOV     R1, R5
ROM:02D4E5B4 09 00 A0 E1                 MOV     R0, R9
ROM:02D4E5B8 3B 07 00 FA                 BLX     memorycompare_at_2d504ac ; 2d504ac
ROM:02D4E5BC 00 00 50 E3                 CMP     R0, #0
ROM:02D4E5C0 01 40 A0 03                 MOVEQ   R4, #1          ; good guy ;)
ROM:02D4E5C4 00 00 00 0A                 BEQ     exit
ROM:02D4E5C8
ROM:02D4E5C8             seterrorval                             ; CODE XREF: check_amss_or_oem+150j
ROM:02D4E5C8                                                     ; check_amss_or_oem+170j
ROM:02D4E5C8 00 40 A0 E3                 MOV     R4, #0          ; return val : error
ROM:02D4E5CC
ROM:02D4E5CC             exit                                    ; CODE XREF: check_amss_or_oem+E0j
ROM:02D4E5CC                                                     ; check_amss_or_oem+FCj ...
ROM:02D4E5CC 06 10 A0 E1                 MOV     R1, R6
ROM:02D4E5D0 66 00 A0 E3                 MOV     R0, #0x66
ROM:02D4E5D4 12 00 00 EB                 BL      rsaroutine2
ROM:02D4E5D8 07 10 A0 E1                 MOV     R1, R7
ROM:02D4E5DC 66 00 A0 E3                 MOV     R0, #0x66
ROM:02D4E5E0 0F 00 00 EB                 BL      rsaroutine2
ROM:02D4E5E4 08 10 A0 E1                 MOV     R1, R8
ROM:02D4E5E8 66 00 A0 E3                 MOV     R0, #0x66
ROM:02D4E5EC 0C 00 00 EB                 BL      rsaroutine2
ROM:02D4E5F0 09 10 A0 E1                 MOV     R1, R9
ROM:02D4E5F4 66 00 A0 E3                 MOV     R0, #0x66
ROM:02D4E5F8 09 00 00 EB                 BL      rsaroutine2
ROM:02D4E5FC 05 10 A0 E1                 MOV     R1, R5
ROM:02D4E600 66 00 A0 E3                 MOV     R0, #0x66
ROM:02D4E604 06 00 00 EB                 BL      rsaroutine2
ROM:02D4E608 04 00 A0 E1                 MOV     R0, R4
ROM:02D4E60C
ROM:02D4E60C             loc_2D4E60C                             ; CODE XREF: check_amss_or_oem+60j
ROM:02D4E60C 2C D0 8D E2                 ADD     SP, SP, #0x2C
ROM:02D4E610 F0 8F BD E8                 LDMFD   SP!, {R4-R11,PC} ; 2d4cc50

Memory Compare Function

ROM:02D504AC 10 B4                       PUSH    {R4}
ROM:02D504AE 04 2A                       CMP     R2, #4
ROM:02D504B0 0E D3                       BCC     loc_2D504D0
ROM:02D504B2 03 1C                       ADDS    R3, R0, #0
ROM:02D504B4 0B 43                       ORRS    R3, R1
ROM:02D504B6 9B 07                       LSLS    R3, R3, #0x1E
ROM:02D504B8 0A D1                       BNE     loc_2D504D0
ROM:02D504BA
ROM:02D504BA             loc_2D504BA                             ; CODE XREF: memorycompare+1Aj
ROM:02D504BA 08 C8                       LDMIA   R0!, {R3}  // Here, bytes are loaded
ROM:02D504BC 10 C9                       LDMIA   R1!, {R4}  // Other bytes
ROM:02D504BE A3 42                       CMP     R3, R4     // Compare both
ROM:02D504C0 02 D1                       BNE     loc_2D504C8
ROM:02D504C2 04 3A                       SUBS    R2, #4
ROM:02D504C4 04 2A                       CMP     R2, #4
ROM:02D504C6 F8 D2                       BCS     loc_2D504BA // loop

Sha1 Calculation

ROM:02D4E3F8             calc_sha_oembl                          ; CODE XREF: check_amss_or_oem+70p
ROM:02D4E3F8
ROM:02D4E3F8             var_AC          = -0xAC
ROM:02D4E3F8
ROM:02D4E3F8 70 40 2D E9                 STMFD   SP!, {R4-R6,LR}
ROM:02D4E3FC A0 D0 4D E2                 SUB     SP, SP, #0xA0
ROM:02D4E400 00 50 A0 E1                 MOV     R5, R0
ROM:02D4E404 04 00 8D E2                 ADD     R0, SP, #0xB0+var_AC ; C0C3D402D8C2D402000801002000FFFF
ROM:02D4E408 01 60 A0 E1                 MOV     R6, R1
ROM:02D4E40C 02 40 A0 E1                 MOV     R4, R2
ROM:02D4E410 67 FF FF EB                 BL      sha1_init
ROM:02D4E414 06 20 A0 E1                 MOV     R2, R6          ; 6895C
ROM:02D4E418 05 10 A0 E1                 MOV     R1, R5          ; 02D9C000
ROM:02D4E41C 04 00 8D E2                 ADD     R0, SP, #0xB0+var_AC ; Pointer to 0
ROM:02D4E420 75 FF FF EB                 BL      sha1_update
ROM:02D4E424 04 10 8D E2                 ADD     R1, SP, #0xB0+var_AC ; Pointer to 344ae0
ROM:02D4E428 04 00 A0 E1                 MOV     R0, R4          ; B0
ROM:02D4E42C AC FF FF EB                 BL      sha1_finish     ; R5 = 02D9C000, R6 = 0006895C, R7 = 00000100
ROM:02D4E430 A0 D0 8D E2                 ADD     SP, SP, #0xA0   ; R4 = sha1_sum
ROM:02D4E434 70 80 BD E8                 LDMFD   SP!, {R4-R6,PC}
ROM:02D4E434             ; End of function calc_sha_oembl

Init OEMSBL

ROM:02D4C290 24 00 9D E5                 LDR     R0, [SP,#0x58+var_34]
ROM:02D4C294 00 00 85 E5                 STR     R0, [R5]
ROM:02D4C298 04 00 95 E5                 LDR     R0, [R5,#4]
ROM:02D4C29C 10 00 90 E5                 LDR     R0, [R0,#0x10]
ROM:02D4C2A0 30 FF 2F E1                 BLX     R0              ; Jump to OEMSBL ! (0x02D9C354)
ROM:02D4C2A4 00 00 95 E5                 LDR     R0, [R5]        ; Welcome back from Init OEMSBL :)
ROM:02D4C2A8 40 D0 8D E2                 ADD     SP, SP, #0x40
ROM:02D4C2AC F0 81 BD E8                 LDMFD   SP!, {R4-R8,PC} ; (0x02D4C044)

Sign in to add a comment