-
安全产品
-
-
-
技术分享 | 静态二进制文件网络协议逆向示例
发布时间:
2019-07-03
来源:
作者:
访问量:
42
二进制程序分析是对闭源软件进行分析的一种有效办法,分析人员在掌握程序二进制代码的基础上,推断程序的执行逻辑和具体执行过程。根据分析过程中程序是否需要实际运行而分为静态二进制程序分析与动态二进制程序分析,静态二进制程序分析技术具有代码覆盖率高,时空开销小等优势。在静态二进制程序分析过程中,需要通过反汇编,反编译等逆向工程技术对底层机器码进行转换与提升,得到一种适合分析的中间语言。IDA Pro是使用广泛的静态二进制程序分析工具,它将机器码转化为汇编代码来辅助分析,具有交互式,可编程,可扩展等特点。静态二进制程序分析过程常常借助协议报文特征字段或网络相关的系统调用来加快分析过程。下面以某协议分析为例:
通过wireshark查看协议报文,看能否发现相应特征字段
明显可以看出消息以0xA0A0A0A0开始,在无更多信息的情况下无法获取更多信息,
使用IDA Pro 加载二进制程序,对程序进行分析,因为知道消息是以0xA0A0A0A0开始,可以查找串A0A0A0A0
显示结果如下:
由些猜测sub_10033901用于组包发送,sub_10033A70用于收包校验,
转到sub_10033901, 使用F5生成C代码
对函数重命名
分析组消息代码块
This, v5, bufa 指向同一块内存,数据格式大致为
0xA0A0A0A0
(4byte)
1
(2byte)
buf
(1 byte)
a5
(1 byte)
未知
接下来的while 与goto 很像循环发送数据,直到发完所有数据
v7代据整个数据长度,bufa指向发送数据缓存数据区
进入sub_10073F76
很明显v7代表整个消息长度,整个消息格式如下
0xA0A0A0A0
(4byte)
1
(2byte)
buf
(1 byte)
a5
(1 byte)
msg_len
(2 byte)
msg_content
结合报文,可以对分析的结果进行验证
二进制程序分析是对闭源软件进行分析的一种有效办法,分析人员在掌握程序二进制代码的基础上,推断程序的执行逻辑和具体执行过程。根据分析过程中程序是否需要实际运行而分为静态二进制程序分析与动态二进制程序分析,静态二进制程序分析技术具有代码覆盖率高,时空开销小等优势。在静态二进制程序分析过程中,需要通过反汇编,反编译等逆向工程技术对底层机器码进行转换与提升,得到一种适合分析的中间语言。IDA Pro是使用广泛的静态二进制程序分析工具,它将机器码转化为汇编代码来辅助分析,具有交互式,可编程,可扩展等特点。静态二进制程序分析过程常常借助协议报文特征字段或网络相关的系统调用来加快分析过程。下面以某协议分析为例:
通过wireshark查看协议报文,看能否发现相应特征字段
明显可以看出消息以0xA0A0A0A0开始,在无更多信息的情况下无法获取更多信息,
使用IDA Pro 加载二进制程序,对程序进行分析,因为知道消息是以0xA0A0A0A0开始,可以查找串A0A0A0A0
显示结果如下:
由些猜测sub_10033901用于组包发送,sub_10033A70用于收包校验,
转到sub_10033901, 使用F5生成C代码
对函数重命名
分析组消息代码块
This, v5, bufa 指向同一块内存,数据格式大致为
0xA0A0A0A0 (4byte) |
1 (2byte) |
buf (1 byte) |
a5 (1 byte) |
未知 |
接下来的while 与goto 很像循环发送数据,直到发完所有数据
v7代据整个数据长度,bufa指向发送数据缓存数据区
进入sub_10073F76
很明显v7代表整个消息长度,整个消息格式如下
0xA0A0A0A0 (4byte) |
1 (2byte) |
buf (1 byte) |
a5 (1 byte) |
msg_len (2 byte) |
msg_content |
结合报文,可以对分析的结果进行验证
上一条:
相关资讯

关注我们