[原创]屏蔽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编辑过]
不错~~~~~~~~~~~~~~~~~~请问你是用什么工具来找这段地址的啊? 看模拟器确实是比较有意思的事,从我的中文模拟器还可以看是在一位刘女士(candyliu我猜是女士)的机器上编译的! 系统的大多数进程都可以通过模拟器(得到名字,从调试信息中)和FireWare的对应找出来,相应的就可以找到启动进程的位置。不过需要对两方面都有些了解才可以。 我对模拟器的分析是在Mamaich给出的IDB文件的基础上进行的,所以我也只好找了个英文版的来用了。英文版的编译时间比中文版的晚两个小时。通过对模拟器的分析,我了解了小八OS的调度是通过什么触发的,但现在还没掌握,所以我打算学习一下uc/OS-ii,估计小八的OS在消息、内存管理方面是差不多的,但同时也看到,小八的OS并不是实时的。不知道国外现在对小八的掌握情况如何,也不知道他们也有写硬件级模拟器的想法。
谁有了解呢? 有一个,用这种方法,用电会不会减少。(这样才可加长待机时间)另外如果能做成可选,就可以对付乱打电话的人了 有2128的模似器吗!我想研究一下! 严重支持~~ 看看高手们的研究和讨论,受益非浅!!
页:
[1]