KoncaCN 发表于 2005-8-12 00:00:00

[原创]屏蔽SIM卡的尝试

通过mmiu35.exe模拟器找到了处理初始化SIM卡消息处理任务地方和SIM卡消息处理任务的函数。我做过两个尝试
; 第一种,不建立消息任务
;0x151D6C: DAC5A871 CC00CC00
; 第二种,在任务处理函数中不处理消息
;0x256D60: EA20906E FAC5906E
结论是:两种修改都成功了,SIM插入小八后开机亦显示未插SIM卡的画面,进去后一切如常
    但问题是:屏蔽SIM卡后关机好慢,两种修改后的关机均比正常慢了10秒
估计是SIM访问硬件的消息未得到处理所造成的,这样简单地修改后,SIM卡应该还是被启动了,只是小八未处理而已。
下面把修改原理大概说一下,让大家参考参考:
------------------- 第一种 -------------------------------------
B5000:1D6C DA C5 A8 71             calls 0C5h, Init_Chipkarte_PL_and_init_SIM_etc
      就把这行干掉,即是不初始化任务,里面的东东如下:
C5000:71A8                   Init_Chipkarte_PL_and_init_SIM_etc:   ;
C5000:71A8 E6 FC 50 35             mov r12, #3550h                   ; pid_CHIPKARTE_PL
C5000:71AC E6 FD 0E 00             mov r13, #0Eh                     ; 0:3B550
C5000:71B0 E6 FE 14 3F             mov r14, #3F14h
C5000:71B4 E6 FF 13 03             mov r15, #313h                  ; 0:C4FF14
C5000:71B8 DA B4 F6 6E             calls 0B4h, GbsInitProcess1   ; 初始化ChipKarte_PL这个任务
C5000:71BC DA C5 26 6B             calls 0C5h, Set_SIM_state_value_9_and_call_deal
C5000:71C0 E6 FC 58 35             mov r12, #3558h                   ; pid_CK?
C5000:71C4 E6 FD 0E 00             mov r13, #0Eh
C5000:71C8 E6 FE 1C 3F             mov r14, #3F1Ch
C5000:71CC E6 FF 13 03             mov r15, #313h
C5000:71D0 DA B4 F6 6E             calls 0B4h, GbsInitProcess1 ; 初始化CK?这个任务
C5000:71D4 E6 FC 50 35             mov r12, #3550h
C5000:71D8 E6 FD 0E 00             mov r13, #0Eh
C5000:71DC E6 FE 2B 00             mov r14, #2Bh ; '+'
C5000:71E0 FA B4 80 79             jmps 0B4h, jump_to_Send_Msg_then_Return
C5000:71E0                   ; End of function Init_Chipkarte_PL_and_init_SIM_etc
               --------------
C5000:6B26                   Set_SIM_state_value_9_and_call_deal:    ;
C5000:6B26 E6 00 32 00             mov DPP0, #32h ; '2'
C5000:6B2A E0 9C                   mov r12, #9
C5000:6B2C F6 8E A2 09             mov w_for_SIM_Low?, ZEROS
C5000:6B30 F6 8E A4 09             mov w_for_SIM_Hi?, ZEROS
C5000:6B34 D7 40 32 00             extp #32h, #1 ; '2'
C5000:6B38 F6 FC CC 09             mov sim_state?, r12
C5000:6B3C E0 1C                   mov r12, #1
C5000:6B3E F2 FD A4 09             mov r13, w_for_SIM_Hi?
C5000:6B42 5C 2D                   shl r13, #2
C5000:6B44 D7 50 13 03             extp #313h, #2
C5000:6B48 D4 4D 84 3D             mov r4,                ; #9please goto0:C566D2
C5000:6B4C D4 5D 86 3D             mov r5,                ; C4000:FD84 func_Array_for_SIM_notify
C5000:6B50 DA C7 88 EE             calls 0C7h, callR5R4            ; R5 for seg,R4 for offset
C5000:6B54 E6 00 32 00             mov DPP0, #32h ; '2'
C5000:6B58 CC 00                   nop
C5000:6B5A F6 8E 9E 09             mov word_C899E, ZEROS
C5000:6B5E DB 00                   rets
C5000:6B5E                   ; End of function Set_SIM_state_value_9_and_call_deal
-------------------- 第二种 ----------------------------
在消息处理函数中,收到消息后就马退出,即不处理:
C5000:6D32                   proc_CHIPKARTE_PL:      ; 上面说的任务的处理函数
C5000:6D32 DA B4 36 7E             calls 0B4h, sub_B47E36
C5000:6D36 48 41                   cmp r4, #1
C5000:6D38 3D 06                   jmpr cc_NZ, loc_C56D46
C5000:6D3A DA B4 4E 7E             calls 0B4h, sub_B47E4E
C5000:6D3E 48 40                   cmp r4, #0
C5000:6D40 3D 02                   jmpr cc_NZ, loc_C56D46
C5000:6D42 E0 1C                   mov r12, #1
C5000:6D44 0D 01                   jmpr cc_UC, loc_C56D48
C5000:6D46                   ; -------------
C5000:6D46                  
C5000:6D46                   loc_C56D46:                           ;
C5000:6D46                                                         ;
C5000:6D46 E0 0C                   mov r12, #0
C5000:6D48                  
C5000:6D48                   loc_C56D48:                           ;
C5000:6D48 E6 00 32 00             mov DPP0, #32h ; '2'
C5000:6D4C E6 FD 32 00             mov r13, #32h ; '2'
C5000:6D50 F6 FC DA 09             mov word_C89DA, r12
C5000:6D54 E6 FC C8 09             mov r12, #9C8h
C5000:6D58 E0 1E                   mov r14, #1
C5000:6D5A DA B4 E2 7A             calls 0B4h, ReceiveMessage?
C5000:6D5E 48 40                   cmp r4, #0
C5000:6D60 FA C5 90 6E             jmps 0C5h, exit_proc_Chip_Karte_PL
革命尚未成功,同时仍需努力呀。
[此贴子已经被作者于2004-8-15 1:03:04编辑过]

hjp3011 发表于 2005-8-12 00:01:00

不错~~~~~~~~~~~~~~~~~~请问你是用什么工具来找这段地址的啊?

coollang 发表于 2005-8-12 00:02:00

看模拟器确实是比较有意思的事,从我的中文模拟器还可以看是在一位刘女士(candyliu我猜是女士)的机器上编译的!

coollang 发表于 2005-8-12 00:03:00

系统的大多数进程都可以通过模拟器(得到名字,从调试信息中)和FireWare的对应找出来,相应的就可以找到启动进程的位置。不过需要对两方面都有些了解才可以。

KoncaCN 发表于 2005-8-12 00:04:00

我对模拟器的分析是在Mamaich给出的IDB文件的基础上进行的,所以我也只好找了个英文版的来用了。英文版的编译时间比中文版的晚两个小时。通过对模拟器的分析,我了解了小八OS的调度是通过什么触发的,但现在还没掌握,所以我打算学习一下uc/OS-ii,估计小八的OS在消息、内存管理方面是差不多的,但同时也看到,小八的OS并不是实时的。不知道国外现在对小八的掌握情况如何,也不知道他们也有写硬件级模拟器的想法。
谁有了解呢?

lishenglyx 发表于 2005-8-12 00:05:00

有一个,用这种方法,用电会不会减少。(这样才可加长待机时间)另外如果能做成可选,就可以对付乱打电话的人了

56311660 发表于 2005-8-12 00:06:00

有2128的模似器吗!我想研究一下!

eggboss 发表于 2005-8-12 00:07:00

KOF999 发表于 2005-8-12 00:08:00

严重支持~~

european 发表于 2005-8-12 00:09:00

看看高手们的研究和讨论,受益非浅!!
页: [1]
查看完整版本: [原创]屏蔽SIM卡的尝试