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

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

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

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


/var/mntt/usba1/cramfs.tar  /cramfs/bin”,将/cramfs/bin 目录中的所有文件打包到 U 盘
cramfs.tar 文件,最后在 pc 中解压。

ELF 文件反汇编。运行 IDA,反汇编 ELF 文件 stbcfg,如图 6,依次选择“ELF  

(Executable) [elf.ldw]”、“SH7058”,反汇编完成后停在 ELF 程序入口,
图 9,还可以保存为 asm 汇编文本文件。

 
71
SH汇编。SuperH(或称 SH)是瑞萨(Renesas)公司研发的一种32位、64位的RISC
(精简指令系统计算机)微处理器,多用在嵌入式系统,具有16 位固定长指令和延迟分支
指令等特点。目前的型号主要有 32 位的 SH-1、SH-2、SH-3、SH-4,以及 64 位的 SH-5、
SH-6,  IDA 支持的 SH7058 为 SH-2E 核心,为了表述具有普遍性,我们参考 SH-4 指令集
进行描述,并把反汇编获得的代码称为“SH 汇编”代码。
SH的延迟槽与延迟转移。所谓延迟转移是指在延迟指令情况下,先执行紧接着延迟转
移指令之后的指令(即延迟槽指令),然后进行转移,SH-4 的转移指令除BF、BT之外的其
它指令和RTE 均为延迟转移。但是必须记住:指令的执行(如寄存器更新等)仍然按延迟
转移指令→延迟槽指令的顺序进行,即使在延迟槽中更改保存了转移地址的寄存器,转移地
址仍然是更改前的寄存器内容!
c 函数的 SH汇编调用。在 ELF程序中会使用到大量 Linux 的 c 函数,了解 SH 汇编对
函数的调用方式,对我们分析汇编代码非常有帮助的。在 SH汇编中,通常从R4开始,依
次是R5、 R6等奇存器做为 c函数对应的参数变量, R0寄存器则为函数返回值。比如 memset
函数原型为:void *memset(void *s, int ch, unsigned n),函数功能:将s 所指向的某一块内存
中的每个字节的内容全部设置为ch 指定的ASCII值, 块的大小由第三个参数指定, 返回值
为指向 s的指针。于是SH汇编调用该函数时,完成将R4 寄存器所指向的内存初始化为R5  

对应的 ASCII值,R6为初始化的内存长度,

Linux的Socket编程基础知识。一般情况下,Socket服务器端必须完成Socket的创建、
绑定、监听等操作,对于面向连接的客户程序使用Socket时,还需要使用 Connect函数将此
Socket 与远端主机相连。当完成对 Scoket 的创建、绑定、监听等操作以后,对于面向连接
的 Socket 就可以使用 Send()和 Recv()函数进行数据传输,对于无连接的数据报 Socket 则使
用Sendto()和Recvfrom()函数进行数据传输。最后使用int close(int sockfd)或int shutdown(int
sockfd,int how)函数关闭Socket描述符。
第一步,使用Socket函数建立 Scoket。
Socket函数原型:int socket(int domain, int type, int protocol);
domain 指明所使用的协议族,通常为PF_INET,表示互联网协议族(TCP/IP 协议族);
type 参数指定 socket 的类型:  SOCK_STREAM 或 SOCK_DGRAM,Socket 接口还定义了
原始Socket(SOCK_RAW),允许程序使用低层协议;protocol通常赋值"0"。  Socket()调用
返回一个整型socket描述符。
第二步,使用Bin 函数为Scoket描述符绑定IP 地址和端口号等。

 
Bin 函数原型:int bind(int sockfd,struct sockaddr *my_addr, int addrlen);
Sockfd 是调用 socket 函数返回的 socket 描述符,my_addr 是一个指向包含有本机 IP 地
址及端口号等信息的sockaddr类型的指针;addrlen常被设置为sizeof(struct sockaddr)。
struct sockaddr或sockaddr_in为 16字节的结构类型:
struct sockaddr_in {
     short int sin_family; /* 地址簇*/
    unsigned short int sin_port; /* 端口号  */
    struct in_addr sin_addr; /* IP 地址  */
    unsigned char sin_zero[8]; /*  填充 0  以保持与struct sockaddr同样大小  */
     };
Bind()函数在成功被调用时返回 0;出现错误时返回"-1"并将 errno置为相应的错误号。
第三步,使用Listen函数使 socket处于被动的监听模式。
  Listen 函原型:int listen(int sockfd, int backlog);
 Sockfd 是 Socket 系统调用返回的 socket 描述符;backlog 指定在请求队列中允许的最
大请求数,进入的连接请求将在队列中等待accept()它们当出现错误时listen 函数返回-1,并

置相应的 errno 错误码。
第四步,使用Accept()函数让服务器接收客户的连接请求。

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

百度搜索更多

谷歌搜索更多

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

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


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

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