Ability to require a password to read any message V.3
Portado del W705 R1GA031 al C510 R1HA035

Código:
;C510 SW-R1HA035
; Ability to require a password to read any message
; Add the line "ViewMessageMode_Id" your menu.ml
; Can choose the following options in the window:
; Always - Request password anywhere
; In trays - Prompts for the password only if you are in trays posts
; Activity Menu - Prompts for the password just to be on the menu of activities
; Never - never prompt for password, messages are usually read
; (!) To enter the window is proved necessary to write the password of the mobile
; For safety
; If you try to access the window without knowing the key
; The book is blocked and have to restart the mobile to enter the ventata
;Yea, so all functions mobility will continue to operate normally
; © K790alex
;(p) enoc
;V.3.0
;
;Add tol Menu.ml
;
;<element id="ViewMessageMode_Id">
;<label type="name"><text>Protec. mensajes</text>
;</label><link type="internal" />
;</element>
;
;port from w705 r1ga031
include "x.inc"
include "c510_r1ha035.lib.asm"
 
;---------------HOOK 1---------------------
org 0x15955E20  ;0x159DF098
                dw dword_15D8D3A0
               
 
;---------------HOOK 2---------------------
org 0x15B2AF0C  ;0x15B08AD0
                dw aViewmessagemod     
                dw loc_15D8D468+1
 
 
;---------------NEWCODE---------------------
org 0x15D2D760 ;0x15D8D3A0
dword_15D8D3A0  dw 0xF                 
                dw loc_15D8D3B8+1
                dw 2
                dw loc_15D8D40A+1
                dw 0
                dw 0
               
 
loc_15D8D3B8:                          
                PUSH    {R4,LR}
                ADD     R4, R1, 0
                BL      sub_15D8D6E8
                CMP     R1, 0
                BEQ     loc_15D8D3D2
                CMP     R1, 1
                BEQ     loc_15D8D3EE
                CMP     R1, 2
                BEQ     loc_15D8D3DA
                CMP     R1, 3
                BEQ     loc_15D8D3E6
                POP     {R4,PC}
 
 
loc_15D8D3D2:                          
                                       
                ADD     R0, R4, 0
                BL      sub_15D8D3F8
                POP     {R4,PC}
 
 
loc_15D8D3DA:                          
                LDR     R1, off_15D8D418
                BLX     R1
                LDR     R1, off_15D8D41C
                BLX     R1
                CMP     R0, 1
 
loc_15D8D3E4:                          
                BEQ     loc_15D8D3D2
 
loc_15D8D3E6:                          
                ADD     R0, R4, 0
                BL      sub_15D8D40C
                POP     {R4,PC}
 
 
loc_15D8D3EE:                          
                LDR     R1, off_15D8D418
                BLX     R1
                CMP     R0, 0
                B       loc_15D8D3E4
 
 
loc_15D8D3F6:                          
                ADD     R0, R1, 0
 
 
 
 
sub_15D8D3F8:                          
                PUSH    {R4,LR}
                LDR     R1, off_15D8D420
                BLX     R1             
                MOV     R3, 0
                MOV     R2, 2
                MOV     R1, 0
                LDR     R4, off_15D8D424
                BLX     R4
                POP     {R4,PC}
 
 
 
 
loc_15D8D40A:                          
                ADD     R0, R1, 0
 
 
 
 
sub_15D8D40C:                          
                PUSH    {LR}
                adr     R1, off_15D8D428
                LDR     R2, off_15D8D460
                BLX     R2             
                POP     {PC}
 
 
 
                NOP
 
off_15D8D418    dw 0x142CDF98+1 ;0x142D24F4+1   ;loc_                                  
off_15D8D41C    dw 0x142188F0+1 ;0x1421C3B8+1   ;loc_
off_15D8D420    dw BookObj_GetBookID                                   
off_15D8D424    dw 0x14EB9698+1 ;0x14EEC470+1 ;sub_    
off_15D8D428    dw 0x15955C1C   ;0x159DEE94     aMsg_ui_viewmes "MSG_UI_ViewMessage_Page"
                                       
                dw 0
                dw 0x15955DD8   ;0x159DF050 ;loc
 
sub_15D8D434:                          
                PUSH    {LR}
                BL      sub_15D8D47C
                CMP     R0, 0
                BNE     loc_15D8D44A
                BL      sub_15D8D4A0
                adr     R1, off_15D8D454
                LDR     R2, off_15D8D460
                BLX     R2             
                POP     {PC}
 
 
loc_15D8D44A:                          
                MOV     R1, 0
                LDR     R2, off_15D8D464
                BLX     R2             
                POP     {PC}
 
 
 
                NOP
 
off_15D8D454    dw aViewmessagem_0     
                                       
                dw 0
                dw dword_15D8D668
off_15D8D460    dw BookObj_GotoPage
                                       
                                       
off_15D8D464    dw BookObj_SetFocus
                                       
 
 
loc_15D8D468:                          
                PUSH    {LR}
                LDR     R1, off_15D8D478
                BLX     R1
                CMP     R0, 0
                BNE     locret_15D8D476
                BL      sub_15D8D434
 
locret_15D8D476:                               
                POP     {PC}
 
off_15D8D478    dw 0x1431E418+1 ;0x143230C0+1   ;loc
 
 
 
 
sub_15D8D47C:                          
                PUSH    {LR}
                adr     R0, loc_15D8D48C
                ADD     R0, 1
                LDR     R1, off_15D8D488
                BLX     R1             
                POP     {PC}
 
 
 
off_15D8D488    dw FindBook
                                       
 
 
loc_15D8D48C:                          
                adr     R1, loc_15D8D504
                ADD     R1, 1
                LDR     R0, [R0,4]
                CMP     R0, R1
                BNE     loc_15D8D49A
                MOV     R0, 1
                BX      LR
 
 
loc_15D8D49A:                          
                MOV     R0, 0
                BX      LR
 
                NOP
 
 
 
 
sub_15D8D4A0:                          
                PUSH    {R4-R6,LR}
                adr     R5, aMsguipass_c
                ADD     R0, R5, 0
                MOV     R1, 0
                PUSH    {R0,R1}
                MOV     R3, 5
                MOV     R2, 1
                MOV     R1, 0x1C
                MOV     R0, 0
                MVNS    R0, R0
                PUSH    {R3}
                LDR     R3, dword_15D8D538
                MOV     R12, R3
                POP     {R3}
                BLX     R12
                ADD     R4, R0, 0
                ADD     SP, SP, 8
                BEQ     locret_15D8D500
                MOV     R1, 0
                MVNS    R0, R1
                PUSH    {R0,R1}
                ADD     R3, R5, 0
                ADD     R3, 0xC
                MOV     R2, 0
                adr     R1, loc_15D8D504
                ADD     R1, 1
                ADD     R0, R4, 0
                PUSH    {R3}
                LDR     R3, off_15D8D53C
                MOV     R12, R3
                POP     {R3}
                BLX     R12            
                ADD     SP, SP, 8
                CMP     R0, 0
                BNE     loc_15D8D4FA
                ADD     R1, R4, 0
                MOV     R3, 0
                ADD     R2, R5, 0
                MOV     R0, 0
                PUSH    {R3}
                LDR     R3, dword_15D8D540
                MOV     R12, R3
                POP     {R3}
                BLX     R12
                POP     {R4-R6,PC}
 
 
loc_15D8D4FA:                          
                MOV     R0, 0
                STR     R0, [R4,0x18]
                ADD     R0, R4, 0
 
locret_15D8D500:                               
                POP     {R4-R6,PC}
 
 
 
                NOP
               
loc_15D8D504:                          
                                       
                PUSH    {R4,LR}
                ADD     R4, R0, 0
                LDR     R0, [R0,0x18]
                CMP     R0, 0
                BEQ     locret_15D8D516
                LDR     R1, off_15D8D640
                BLX     R1             
                MOV     R0, 0
                STR     R0, [R4,0x18]
 
locret_15D8D516:                               
                POP     {R4,PC}
 
aMsguipass_c    db "MsgUiPass.c",0    
aViewmessagem_1 db "ViewMessageModeBook",0
 
               
dword_15D8D538  dw 0x4BA32698   ;0x4BA3279C memalloc "funciones del elfpack"                   
               
 
off_15D8D53C    dw CreateBook
                                       
 
dword_15D8D540  dw 0x4BA326C0   ;0x4BA327C4 memfree     "funciones del elfpack"                
               
 
loc_15D8D544:                          
                PUSH    {R4-R6,LR}
                SUB     SP, SP, 0x10
                ADD     R4, R1, 0
                ADD     R0, R4, 0
                LDR     R1, off_15D8D644
                BLX     R1             
                CMP     R0, 0
                BEQ     loc_15D8D5C6
                STR     R0, [R4,0x18]
                MOV     R1, 4
                LDR     R2, off_15D8D64C
                BLX     R2             
                BL      sub_15D8D6E8
                LDR     R0, [R4,0x18]
                LDR     R2, off_15D8D648
                BLX     R2             
                adr     R0, aRequestPassword   
                BL      sub_15D8D6CC
                ADD     R1, R0, 0
                LDR     R0, [R4,0x18]
                LDR     R2, off_15D8D650
                BLX     R2             
                adr     R6, aAlways    
                ADD     R0, R6, 0
                BL      sub_15D8D6CC
                STR     R0, [SP]
                ADD     R0, R6, 0
                ADD     R0, 8
                BL      sub_15D8D6CC
                STR     R0, [SP,4]
                ADD     R0, R6, 0
                ADD     R0, 0x14
                BL      sub_15D8D6CC
                STR     R0, [SP,8]
                ADD     R0, R6, 0
                ADD     R0, 0x28
                BL      sub_15D8D6CC
                STR     R0, [SP,0xC]
                LDR     R0, [R4,0x18]
                MOV     R1, SP
                MOV     R2, 4
                LDR     R3, off_15D8D654
                BLX     R3             
                MOVL    R5, 0xFC0
                LDR     R0, [R4,0x18]
                ADD     R1, R5, 0
                LDR     R2, off_15D8D664
                LDR     R3, off_15D8D658
                BLX     R3             
                LDR     R0, [R4,0x18]
                ADD     R1, R5, 2
                adr     R2, loc_15D8D5FC
                ADD     R2, 1
                LDR     R3, off_15D8D658
                BLX     R3             
                LDR     R0, [R4,0x18]
                LDR     R1, off_15D8D65C
                BLX     R1             
 
loc_15D8D5C6:                          
                ADD     SP, SP, 0x10
                POP     {R4-R6,PC}
                NOP
 
aAlways db "Always",0  
        db    0      
aIntrays db "In trays",0
                db        0
                db        0
                db        0
aActvmenu db "Actv menu",0
                db    0
;               db    0
;               db    0
;               db    0
aNever   db "never",0
                db    0
                db    0
;               db    0
;               db    0
                align 4
               
loc_15D8D5FC:                          
                PUSH    {R4,R5,LR}
                ADD     R4, R0, 0
                ADD     R0, R1, 0
                LDR     R2, off_15D8D660
                BLX     R2             
                SUB     SP, SP, 4
                STR     R0, [SP]
                MOV     R0, 0
                PUSH    {R0}
                adr     R1, aMsgpass_dat
                LDR     R0, off_15D8D740
                MOV     R2, 2
                MOVL    R3, 0x180
                PUSH    {R3}
                LDR     R3, off_15D8D718
                MOV     R12, R3
                POP     {R3}
                BLX     R12            
                ADD     R5, R0, 0
                ADD     SP, SP, 4
                MOV     R2, 1
                MOV     R1, SP
                LDR     R3, off_15D8D71C
                BLX     R3             
                ADD     SP, SP, 4
                ADD     R0, R5, 0
                LDR     R1, off_15D8D724
                BLX     R1             
                ADD     R0, R4, 0
                LDR     R1, off_15D8D664
                BLX     R1             
                POP     {R4,R5,PC}
 
                NOP
                align 4
off_15D8D640    dw GUIObject_Destroy
                                       
off_15D8D644    dw CreateOneOfMany     
                                       
off_15D8D648    dw OneOfMany_SetChecked
                                       
off_15D8D64C    dw OneOfMany_SetItemCount
                                       
off_15D8D650    dw GUIObject_SetTitleText
                                       
off_15D8D654    dw OneOfMany_SetTexts
                                       
off_15D8D658    dw GUIObject_SoftKeys_SetAction
                                       
                                       
off_15D8D65C    dw GUIObject_Show
                                       
off_15D8D660    dw OneOfMany_GetSelected
                                       
off_15D8D664    dw FreeBook
                                       
                                       
dword_15D8D668  dw 0xF                 
                dw loc_15D8D3F6+1
                dw 2
                dw loc_15D8D544+1
                dw 0
                dw 0
aViewmessagemod du "ViewMessageMode_Id",0
                db    0
                db    0
aViewmessagem_0 db "ViewMessageModeMainPage",0
aRequestPassword        db "Request Password",0    
 
 
 
                align 4
sub_15D8D6CC:                          
                                       
                PUSH    {R1-R5,LR}
                ADD     R4, R0, 0
                MOV     R0, 0
                PUSH    {R0}
                ADD     R3, R0, 0
                MOV     R1, 6
                MOV     R2, 0x63
                ADD     R0, R4, 0
                LDR     R5, off_15D8D6E4
                BLX     R5
                ADD     SP, SP, 4
                POP     {R1-R5,PC}
 
 
 
off_15D8D6E4    dw 0x141818E4+1 ;0x14184D2C+1   ;sub
 
                align 4
 
sub_15D8D6E8:                          
                                       
 
var_24          = -0x24
 
                PUSH    {R0,R2-R7,LR}
                MOV     R0, 0
                PUSH    {R0}
                adr     R1, aMsgpass_dat
                LDR     R0, off_15D8D740
                MOV     R2, 1
                MOVL    R3, 0x180
                PUSH    {R3}
                LDR     R3, off_15D8D718
                MOV     R12, R3
                POP     {R3}
                BLX     R12            
                ADD     R4, R0, 0
                MOV     R2, 1
                MOV     R1, SP
                LDR     R3, off_15D8D720
                BLX     R3             
                ADD     R0, R4, 0
                LDR     R1, off_15D8D724
                BLX     R1             
                LDR     R1, [SP,0x24+var_24]
                ADD     SP, SP, 4
                POP     {R0,R2-R7,PC}
 
 
 
off_15D8D718    dw _fopen
                                       
                                       
off_15D8D71C    dw fwrite      
                                       
off_15D8D720    dw fread
                                       
off_15D8D724    dw fclose      
                                       
                                       
aMsgpass_dat    du "MsgPass.dat",0
                                       
off_15D8D740    dw 0x15A85F54   ;0x15A61534     aTpaSystemMes_0 "/tpa/system/messaging"