- 积分
- 211
- 实力分
- 点
- 金钱数
- 两
- 技术分
- 分
- 贡献分
- 分
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
;X55也应该有自己的区号秀吧!!机友有会TaskingC166Cr.编程的可以到FTP-SPGC 下载V2.3的源代码。
;我不会 C 所以把V3.0反汇编了。如下,注释是对比V2.3的源代码加入的
;我加的注释不一定正确哦!!
;移植难度不会太大
;Siemens Flash Explorer v2.51c (c)Dec.03 by RizaPN <rizapn@yahoo.com>
;File 1.txt (pos=0x0,sz=0x216A,rd=0x216A) buffered
;Disassembly: offset=0x0, size=0x216A, baseAddr=0xA00000
org 0F63680h
jmps _GetProvAndCity ;sub_F6392C _GetProvAndCity
calls 0E6h, 7DD8h ;第一个内部调用
jmps _main ;loc_F63744 _main
mov r14, [r0+#1B6h]
mov r15, [r0+#1B8h]
jmpr cc_UC, loc_56369A
mov r14, r6
mov r15, r7
loc_56369A:
mov r12, r8
mov r13, r9
calls 0F6h, 382Eh ;_AppendInfo
mov r12, r8
mov r13, r9
rets
extp r9, #2
mov r14, [r8+#4Ah]
mov r15, [r8+#4Ch]
calls 0F6h, 38A2h ;_AppendInfoW
loc_5636B6:
mov r12, r6
mov r13, r7
extp r9, #2
mov r7, [r8+#2]
mov r6, [r8]
rets
;==================//得到省表和市表========================
mov [-r0], r12
mov [-r0], r13
mov r12, [r0+#60h]
mov r13, [r0+#62h]
mov r14, #0Ah
calls 0F6h, 304h ;第二个内部调用
smov r4, [r0+#60h]
mov r5, [r0+#62h]
extp r5, #2
mov r12, [r4+]
mov r13, [r4]
mov r14, [r0+#2]
mov r15, [r0]
calls _GetProvAndCity
mov r13, [r0+]
mov r12, [r0+]
calls 0C7h, 8536h ;如果长度大于12,则包括IP前缀,下面滤去已知IP前缀 第三个内部调用
rets
;==================================
loc_icall:
jmps 0C7h, 0EE88h ;第四个内部调用
;==================================
;
_F63B98: dw 672Ah ;szUnknownUser
dw 77E5h
dw 53F7h
dw 7801h
dw 0
_F63966: dw 6570h ;szErrorData
dw 636Eh
dw 5E93h
dw 9519h
dw 8BEFh
dw 0
_F63B2C: dw 672Ch ;szLocalCode
dw 5730h
dw 53F7h
dw 7801h
dw 0
_F63BF2: dw 20h ;szSplit
dw 0
_F6384A: dw 0Dh ;szAddInfo
dw 0
word_F63724: dw 7EBAh ; DATA XREF: sub_F6392C+222r
word_F63726: dw 0C7h ; DATA XREF: sub_F6392C+226r
word_F63728: dw 82E6h ; DATA XREF: sub_F6392C+1B8r
word_F6372A: dw 0C7h ; DATA XREF: sub_F6392C+1BCr
word_F6372C: dw 8536h ; DATA XREF: sub_F6392C+B2r
word_F6372E: dw 0C7h ; DATA XREF: sub_F6392C+B6r
word_F63730: dw 8388h ; DATA XREF: sub_F6392C+F4r
; sub_F6392C+12Ar
word_F63732: dw 0C7h ; DATA XREF: sub_F6392C+F8r
; sub_F6392C+12Er
word_F63734: dw 0C7E0h ; DATA XREF: r
; sub_F6382E+48r
word_F63736: dw 0C7h ; DATA XREF: r
; sub_F6382E+4Cr
word_F63738: dw 102Eh ; DATA XREF: r
word_F6373A: dw 0D1h ; DATA XREF: r
word_F6373C: dw 10C6h ; DATA XREF: r
word_F6373E: dw 0D1h ; DATA XREF: r
word_F63740: dw 5CC8h ; DATA XREF: r
word_F63742: dw 0A3h ; DATA XREF: r
;==================================
;/****************/
;/* main program */
;/****************/
loc_F63744: ;_main
sub r0, #70h
mov r12, #0
mov [r0], r12
mov r13, #20h
mov [r0+#44h], r13
mov r14, r0
and r14, #3FFFh
mov r15, DPP1
mov [r0+#40h], r14
mov [r0+#42h], r15
mov r1, #2Ah
mov [-r0], r1
mov r12, #2C3Ah
mov r13, #0Ch
mov r14, #48h
add r14, r0
mov r15, DPP1
mov DPP0, #3D8h
and r14, #3FFFh
mov r4, 3734h ;//ASCII号码版本
mov r5, 3736h
calls loc_icall
add r0, #2
mov DPP0, #3D8h
mov r12, #1
mov r4, 3740h ;//CallFlag
mov r5, 3742h
calls loc_icall
cmp r4, #0
jmpr cc_Z, loc_5637D8
mov r12, #0
mov [-r0], r12
mov r13, #48h
add r13, r0
and r13, #3FFFh
mov r14, DPP1
mov [-r0], r14
mov [-r0], r13
mov r13, #1
mov r14, #65h
mov DPP0, #3D8h
mov r15, #0Ah
mov r4, 373Ch ;DrawAString
mov r5, 373Eh
calls loc_icall
add r0, #6
loc_5637D8:
mov r12, r0
and r12, #3FFFh
mov r13, DPP1
mov r14, #46h
add r14, r0
and r14, #3FFFh
mov r15, DPP1
calls _GetProvAndCity
mov r12, #3
mov [-r0], r12
mov r13, #42h
add r13, r0
and r13, #3FFFh
mov r14, DPP1
mov [-r0], r14
mov [-r0], r13
mov r12, #0
mov r13, #35h
mov r14, #65h
mov DPP0, #3D8h
mov r15, #10h
mov r4, 3738h ;DrawWString 显示城市位置
mov r5, 373Ah
calls loc_icall
add r0, #76h
rets
sub_AppendInfo:
mov [-r0], r9
mov [-r0], r8
sub r0, #2Ah
mov r9, r13
mov r8, r12
mov [-r0], r14
mov [-r0], r15
mov r12, #4
mov [-r0], r12
extp r9, #2
mov r13, [r8+#2]
mov r12, [r8]
mov r14, #3720h
mov r15, #3D8h
calls sub_code_1
add r0, #2
mov r15, [r0+]
mov r14, [r0+]
mov r12, #2Ah
mov [-r0], r12
mov r12, r14
mov r13, r15
mov r14, #2
add r14, r0
mov r15, DPP1
mov DPP0, #3D8h
and r14, #3FFFh
mov r4, 3734h ;//ASCII号码版本
mov r5, 3736h
calls loc_icall
add r0, #2
extp r9, #2
mov r12, [r8+]
mov r13, [r8]
mov r14, r0
and r14, #3FFFh
mov r15, DPP1
calls _GetProvAndCity
add r0, #2Ah
mov r8, [r0+]
mov r9, [r0+]
rets
sub_AppendInfoW: ;//WString号码版本
mov [-r0], r8
sub r0, #2Ah
mov r8, #1
mov [-r0], r12
mov [-r0], r13
mov [-r0], r14
mov [-r0], r15
mov r1, #4
mov [-r0], r1
mov r2, r12
mov r3, r13
extp r3, #2
mov r12, [r2+]
mov r13, [r2]
mov r14, #3720h
mov r15, #3D8h
calls sub_code_1
add r0, #2
mov r15, [r0+]
mov r14, [r0+]
mov r13, [r0+]
mov r12, [r0+]
jmpr cc_UC, loc_5638F4
loc_5638D8:
extp r15, #2
mov r2, [r14+#2]
mov r1, [r14]
mov r3, r8
shl r3, #1
add r1, r3
extp r2, #1
mov r1, [r1]
mov r2, r8
add r2, r0
movb [r2+#0FFFFh], rl1
add r8, #1
loc_5638F4:
extp r15, #2
mov r2, [r14+#2]
mov r1, [r14]
extp r2, #1
mov r1, [r1]
cmp r1, r8
jmpr cc_NC, loc_5638D8
movb rl1, #0
add r8, r0
movb [r8+#0FFFFh], rl1
mov r8, r12
mov r14, r13
extp r14, #2
mov r12, [r8+]
mov r13, [r8]
mov r14, r0
and r14, #3FFFh
mov r15, DPP1
calls _GetProvAndCity
add r0, #2Ah
mov r8, [r0+]
rets
;------------------------------------------------------------
SUB_F6392C: ;_GetProvAndCity //得到号码所对应的省市字串
mov [-r0], r9
mov [-r0], r8
mov [-r0], r7
mov [-r0], r6
sub r0, #0Ah
mov r9, r15
mov r8, r14
mov r7, r13
mov r6, r12
mov r12, #0
mov r13, #3E0h
extp r13, #1 ;//校验数据库的有效性
movb rl1, [r12]
cmpb rl1, #0FBh
jmpr cc_NZ, loc_56395E
mov r12, #2
mov r13, #3E0h
extp r13, #1
movb rl1, [r12]
cmpb rl1, #2
jmpr cc_Z, loc_563978
loc_56395E:
mov r8, #8
mov [-r0], r8
mov r12, r6
mov r13, r7
mov r14, #3706h
mov r15, #3D8h
calls sub_code_1
add r0, #2
jmpa cc_UC, loc_563BA6
loc_563978: ;//得到省表和市表
mov r12, #18h
mov r13, #3E0h
extp r13, #2
mov r14, [r12+]
mov r15, [r12]
add r14, #0
addc r15, #0F8h
mov [-r0], r14
shr r14, #0Eh
shl r15, #2
or r15, r14
mov r14, [r0+]
and r14, #3FFFh
mov [r0+#4], r14
mov [r0+#6], r15
mov r12, #20h
mov r13, #3E0h
extp r13, #2
mov r1, [r12+]
mov r2, [r12]
add r1, #0
addc r2, #0F8h
mov [-r0], r1
shr r1, #0Eh
shl r2, #2
or r2, r1
mov r1, [r0+]
and r1, #3FFFh
mov [r0], r1
mov [r0+#2], r2
extp r9, #1 ;//去掉国际码+86
movb rl3, [r8]
cmpb rl3, #2Bh
jmpr cc_NZ, loc_5639D6
add r8, #3
loc_5639D6:
mov r12, r8
mov DPP0, #3D8h
mov r13, r9
mov r4, 372Ch ;//如果长度大于12,则包括IP前缀,下面滤去已知IP前缀
mov r5, 372Eh
calls loc_icall
mov r12, r4
cmp r12, #0Ch
jmpa cc_SLE, loc_563A82
mov r14, #0
mov r12, #2004h
mov r13, #3E7h
jmpr cc_UC, loc_563A72
loc_563A00:
mov [-r0], r14
mov [-r0], r12
mov [-r0], r13
extp r13, #1
movb rl1, [r12]
movbs r15, rl1
mov [-r0], r15
mov r12, r8
mov r13, r9
mov r15, [r0+#2]
mov r14, [r0+#4]
mov DPP0, #3D8h
add r14, #1
mov r4, 3730h ;//如果长度大于12,则包括IP前缀,下面滤去已知IP前缀
mov r5, 3732h
calls loc_icall
add r0, #2
mov r13, [r0+]
mov r12, [r0+]
mov r14, [r0+]
cmp r4, #0
jmpr cc_NZ, loc_563A6C
extp r13, #1
movb rl1, [r12]
movbz r12, rl1
mov r13, #0
add r8, r12
mov r12, #3
mov [-r0], r12
mov r12, r8
mov r13, r9
mov r14, #3D3Ah
mov DPP0, #3D8h
mov r15, #3D8h
mov r4, 3730h
mov r5, 3732h
calls loc_icall
add r0, #2
cmp r4, #0
jmpr cc_NZ, loc_563A82
add r8, #1
jmpr cc_UC, loc_563A82
loc_563A6C:
add r14, #1
add r12, #8
loc_563A72:
mov r15, #0E000h
mov r1, #0F9h
exts r1, #1
mov r15, [r15]
cmp r15, r14
jmpr cc_SGT, loc_563A00
loc_563A82:
extp r9, #1
movb rl1, [r8]
cmpb rl1, #30h ;//如果以0开头,则判断为是固定长途电话
jmpa cc_NZ, loc_563B0E
mov r14, #10h ;//得到长途电话区号表
mov r15, #3E0h
extp r15, #2
mov r12, [r14+]
mov r13, [r14]
add r12, #0
addc r13, #0F8h
mov [-r0], r12
shr r12, #0Eh
shl r13, #2
or r13, r12
mov r12, [r0+]
and r12, #3FFFh
add r8, #1
extp r9, #1 ;//判断是否是三位区号010和02x
movb rl1, [r8]
cmpb rl1, #31h
jmpr cc_Z, loc_563AC6
extp r9, #1
movb rl1, [r8]
cmpb rl1, #32h
jmpr cc_NZ, loc_563AD0
loc_563AC6:
movb rl1, #0
extp r9, #1
movb [r8+#2], rl1
jmpr cc_UC, loc_563AD8
loc_563AD0:
movb rl1, #0
extp r9, #1
movb [r8+#3], rl1
loc_563AD8:
mov [-r0], r13
mov [-r0], r12
mov r12, r8
mov DPP0, #3D8h
mov r13, r9
mov r4, 3728h ;//得到区号,在区号表中查找对应的城市号
mov r5, 372Ah
calls loc_icall
mov r15, r4
mov r12, [r0+]
mov r13, [r0+]
mov r9, #14h
mov r14, #3E0h
extp r14, #2
mov r1, [r9+]
mov r2, [r9]
mov r14, r1
calls 0F6h, 3C6Ch ;sub_code_2
mov r8, r4
jmpr cc_UC, loc_563B78
loc_563B0E:
extp r9, #1 ;//如果是13x,则判定为移动电话
movb rl1, [r8]
cmpb rl1, #31h
jmpr cc_NZ, loc_563B24
extp r9, #1
movb rl1, [r8+#1]
cmpb rl1, #33h
jmpr cc_Z, loc_563B3C
loc_563B24:
mov r8, #8
mov [-r0], r8
mov r12, r6
mov r13, r7
mov r14, #3712h
mov r15, #3D8h
calls sub_code_1
add r0, #2
jmpr cc_UC, loc_563BA6
loc_563B3C:
add r8, #2
movb rl1, #0
extp r9, #1
movb [r8+#5], rl1
mov r12, r8
mov DPP0, #3D8h
mov r13, r9
mov r4, 3724h ;//得到手机号码的前五位,在手机号码表中查找对应的城市号
mov r5, 3726h
calls loc_icall
mov r14, r4
mov r15, r5
mov r9, #8
mov r12, #3E0h
mov r1, r12
extp r1, #2
mov r12, [r9+]
mov r13, [r9]
add r12, #0
addc r13, #0F8h
calls 0F6h, 3C2Ah ;sub_code_3
mov r8, r4
loc_563B78:
mov r9, #24h
mov r12, #3E0h
extp r12, #2
mov r13, [r9+]
mov r14, [r9]
mov r9, r8
mov r12, #0
sub r9, r13
subc r12, r14
jmpr cc_C, loc_563BAA
mov r8, #8
mov [-r0], r8
mov r12, r6
mov r13, r7
mov r14, #36FCh
mov r15, #3D8h
calls sub_code_1
add r0, #2
loc_563BA6:
mov r4, #0
jmpr cc_UC, loc_563C1C
loc_563BAA:
mov r9, #3
mov [-r0], r9
mov r12, r6
mov r13, r7
mov r14, [r0+#2]
mov r15, [r0+#4]
add r14, #0Ch
mov r1, r8
shl r1, #3
sub r1, r8
shl r1, #1
mov [r0+#0Ah], r1
add r14, r1
extp r15, #1
mov r8, [r14]
shr r8, #0Ah
mov r14, r8
shl r14, #2
add r14, r8
shl r14, #1
mov r8, r14
mov r14, [r0+#6]
mov r15, [r0+#8]
add r14, r8
calls sub_code_1
mov r8, #8
mov [r0], r8
mov r12, r6
mov r13, r7
mov r14, #371Ch
mov r15, #3D8h
calls sub_code_1
mov r8, #4
mov [r0], r8
mov r12, r6
mov r13, r7
mov r9, [r0+#0Ah]
mov r14, [r0+#2]
mov r15, [r0+#4]
add r14, r9
calls sub_code_1
add r0, #2
mov r4, #1
loc_563C1C:
add r0, #0Ah
mov r6, [r0+]
mov r7, [r0+]
mov r8, [r0+]
mov r9, [r0+]
rets
sub_code_3: ;//从手机号码表中查找对应的城市号
mov r1, r14
mov r2, r15
mov r3, r2
shr r1, #3
shr r2, #3
shl r3, #0Dh
or r1, r3
mov r3, r14
mov r4, r15
add r3, r1
addc r4, r2
add r12, r3
addc r13, r4
and r14, #7
and r15, #0
exts r13, #1
movb rl2, [r12]
movbz r1, rl2
shr r1, r14
add r12, #1
addc r13, #0
exts r13, #1
movb rl2, [r12]
movbz r12, rl2
mov r13, #0Fh
mov r2, #0
sub r13, r14
subc r2, r15
shl r12, r13
shr r12, #7
mov r4, r12
or r4, r1
rets
sub_code_2: ;//从长话区号表中查找对应的城市号
mov r1, #0
mov r2, #0
mov r3, r14
jmpr cc_UC, loc_563CA2
loc_563C74:
mov r3, r1
shl r3, #2
mov r4, r3
mov r5, r4
ashr r5, #0Fh
add r4, #0F004h
addc r5, #0F9h
exts r5, #1
mov r4, [r4]
cmp r4, r15
jmpr cc_NZ, loc_563CA0
mov r12, r3
ashr r12, #0Fh
add r3, #0F006h
addc r12, #0F9h
exts r12, #1
mov r4, [r3]
rets
loc_563CA0:
add r1, #1
loc_563CA2:
mov r3, #0F000h
mov r4, #0F9h
exts r4, #1
mov r3, [r3]
cmp r3, r1
jmpr cc_SGT, loc_563C74
jmpr cc_UC, loc_563CE6
loc_563CB4:
mov r1, r14
add r1, r2
mov r3, r1
shr r1, #0Fh
add r1, r3
ashr r1, #1
mov r3, r1
shl r3, #2
mov r4, r3
mov r3, r12
mov r10, r13
add r3, r4
extp r10, #1
mov r4, [r3]
cmp r4, r15
jmpr cc_Z, loc_563CEA
extp r10, #1
mov r3, [r3]
cmp r3, r15
jmpr cc_ULE, loc_563CE2
mov r14, r1
sub r14, #1
jmpr cc_UC, loc_563CE6
loc_563CE2:
mov r2, r1
add r2, #1
loc_563CE6:
cmp r2, r14
jmpr cc_SLE, loc_563CB4
loc_563CEA:
mov r15, r1
mov r2, r2
cmp r2, r14
jmpr cc_SLE, loc_563CF8
mov r4, #1FFh
jmpr cc_UC, loc_563D02
loc_563CF8:
add r12, #2
shl r15, #2
add r12, r15
extp r13, #1
mov r4, [r12]
loc_563D02:
rets
;--------------------------
sub_code_1:
extp r13, #1
mov r2, [r12]
mov r1, #1
jmpr cc_UC, loc_563D24
loc_563D0C:
mov r3, r14
extp r15, #1
mov r3, [r14+]
mov r4, r1
add r1, #1
add r4, r2
shl r4, #1
mov r5, r12
mov r10, r13
add r5, r4
extp r10, #1
mov [r5], r3
loc_563D24:
extp r15, #1
mov r3, [r14]
jmpr cc_Z, loc_563D30
mov r3, [r0]
cmp r1, r3
jmpr cc_ULE, loc_563D0C
loc_563D30:
add r2, r1
sub r2, #1
extp r13, #1
mov [r12], r2
rets
end |
|