免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 系统安全 > 谁遥控了我的电视?—中兴机顶盒IPTV安全(4)

谁遥控了我的电视?—中兴机顶盒IPTV安全(4)

时间:2011-12-06 22:20来源:未知 整理:寂涯网络 点击:


// bt/s 延迟指令:T=1时,转移,T=0时,不转移。即Socket套接字已建立,则跳转。 
sts.l pr, @-r15
mov.l off_4086C0, r0 ; __errno_location
jsr @r0 ; __errno_location //置 errno错误号
nop
bra loc_4086AE //返回错误代码,退出函数
mov #h'58, r1
loc_408682:
tst r5, r5 //8 字节的unk_42B2B8,tst 指令:逻辑“与”,结果为零 T置位,结果不
为零时,清除T位,不修改寄存器内容。
bf/s loc_408692 //bf/s 延迟指令:T=1 时,执行下条指令,不跳转,T=0 时,执
行下条指令后进行跳转。类似 if not 语句。配合 tst 指令通常表示:当寄存器(如此
处为 r5)为 0(或为空)时,不执行跳转,而当寄存器不为 0(或非空)时,则执行跳
转。
cmp/eq #1, r0 //r0=r7,当r7=1 时,1T,否则0T。
…  (略)//调用__errno_location,置errno 错误号
bra loc_4086AE
mov #h'E, r1
loc_408692:
bt loc_4086B6
//即当 r7=1 时,直接调用recv 函数,否则逐一判断是否等于#h’100、#h'40、#2等,
是则调用 recv函数接收数据,否则调用__errno_location,置errno 错误号。
mov.w word_4086BE, r1 ; h'100
cmp/eq r1, r0
bt/s loc_4086B6
cmp/eq #h'40, r0
bt/s loc_4086B6
cmp/eq #2, r0
bt/s loc_4086B6
tst r7, r7
bt loc_4086B6
…  (略)//调用__errno_location,置errno 错误号
mov #h'16, r1
loc_4086AE: //返回错误代码,恢复pr指针
mov.l r1, @r0
lds.l @r15+, pr
rts
mov #-1, r0
loc_4086B6:
mov.l off_4086C4, r1 ; recv 
mov r0, r7
jmp @r1 ; recv  //原型:int recv(int sockfd, char FAR *buf, int len, int flags)
lds.l @r15+, pr
; End of function sub_408670  

分析程序接收数据(命令),代码如下: 

loc_40484C:
mov.l off_404938, r10 ; sub_408670 
mov r3, r4 

当 recv 函数接收到数据后,跳转到 loc_404876,进行数据进行格式转换,即进行网络字
顺序转换,代码如下:
mov.l off_40493C, r8 ; unk_42B2B8
mov #8, r6
mov.w word_4048EE, r9 ; h'100
mov r8, r5
jsr @r10 ; sub_408670  //recv(unk_42C644, unk_42B2B8,#8,#h’100)
mov r9, r7
cmp/pz r0 //r0为 recv 函数返回值,接收数据的长度,当r0≥0,1T。
mov.l off_404940, r4 ; aReceiveCommand ; "Receive Command failed!\n"
bf/s loc_40486A //当 r0<0时跳转,输出"Receive Command failed!\n"并断开连
接。
tst r0, r0
bf/s loc_404876 //r0不为零,即接收到数据时跳转,否则输出错误信息,断开连
接。
mov #h'18, r2
mov.l off_404944, r4 ; aClientDisconne ; "Client Disconnet!\n"
… (略)//输出"Receive Command failed!\n",断开连接。

当 recv 函数接收到数据后,跳转到 loc_404876,进行数据进行格式转换,即进行网络字节
顺序转换,代码如下: 
loc_404876:
mov.l off_40493C, r7 ; unk_42B2B8 //8字节长,按A、B 两个32 位的双字
mov.l dword_404948, r3 ; h'FF0000       
mov.l @(4,r7), r1   //r1为B            
mov.w @r7, r0  //r0为 A
mov r1, r6
shlr8 r6  //B 右移 8位,即1个字节,r6为“00 B3 B2 B1”
extu.w r0, r0 //A 按字零扩展,即第16~31 位置 0,r0为“00 00 A1 A0”
mov r1, r7
and r1, r3  //B“与”h'FF0000,结果存入 r3,r3 为“00 B2 00 00”
shlr16 r7  //B 右移 16 位,即2个字节,r7 为“00 00 B3 B2”
shld r2, r1  
//根据 r2 位移 r1。当 r2 为正左移,为负右移,r2 低 5 位指定位移的位数。此处的
r2=h'18=24,所以r1 即B左移 24 位(3字节),r1为“B0 00 00 00”
extu.b r6, r6 //r6按字节零扩展,即第8~31位置0,r6为“00 00 00 B1”
extu.b r0, r2 //r0按字节零扩展,即第8~31位置0,r2为“00 00 00 A0”
shlr8 r3  //r3右移8 位,r3为“00 00 B2 00”
shlr8 r7  //r7右移8 位,r7为“00 00 00 B3”
shll16 r6  //r6左移 16 位,r6为“00 B1 00 00”
shll8 r2   //r2左移8位,r2为“00 00 A0 00”
shlr8 r0  //r0右移8位,r0为“00 00 00 A1”

本页地址 http://www.jybase.net/xitonganquan/20111206699.html

百度搜索更多

谷歌搜索更多

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com