b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

结构体本帖最后由 skywilling 于 2018-2-2

电脑杂谈  发布时间:2018-02-21 13:38:29  来源:网络整理

结构体数组_结构体_结构体指针

结构体结构体

0x00前言

0x01静态分析

本次要分析的代码段位于0x80495C0,如图是IDA还原出的关键伪C代码

1.png (24.04 KB, 下载次数: 0)

保存到相册

2018-2-20 17:27 上传

这次我们要分析的就是disasm函数,在分析这个函数之前,我们需要先分析一下传入的参数v4,图中已高亮显示,很容易看出v4可能是一个长度为4的数组(下标为0的变量存放一个数组的首地址,这个数组是一个指令集,其他3个我们在动态调试中说明)

disasm函数里面是一个有大量分支的switch分支语句,这里截取部分

28.png (41.17 KB, 下载次数: 0)

保存到相册

2018-2-20 22:03 上传

0x02动态分析

在这里我是用的是Ubuntu虚拟机(该文件是ELF程序)+IDA,这里输入以0123456789012345为例,直接断点到0x0804964A(call disasm)

2.png (14.57 KB, 下载次数: 0)

保存到相册

2018-2-20 17:48 上传

3.png (18.49 KB, 下载次数: 0)

保存到相册

2018-2-20 17:50 上传

此时传入的参数位于栈顶

4.png (18.28 KB, 下载次数: 0)

保存到相册

2018-2-20 17:53 上传

然后在Hex View中查看内存

5.png (12.33 KB, 下载次数: 0)

保存到相册

2018-2-20 17:56 上传

选中的部分就是v4[0],紧跟的三个不为零的数据分别是v4[1],v4[2],v4[3]

v4[1]存放的地址指向(其实也是一个数组)

7.png (16.52 KB, 下载次数: 0)

保存到相册

2018-2-20 18:06 上传

v4[2]存放的地址指向(虽然现在指向数组尾,但是后面会发现这是一个数据临时存放区)

8.png (14.94 KB, 下载次数: 0)

保存到相册

2018-2-20 18:09 上传

v4[3]存放的地址指向(待处理的数据)

9.png (36.32 KB, 下载次数: 0)

保存到相册

结构体数组_结构体_结构体指针

2018-2-20 18:11 上传

v4与其解析为一个数组,不如解析为一个结构体来的简洁明了

[C] 纯文本查看 复制代码

struct code_vm{ unsigned int *code_ip; unsigned int *array; unsigned int temp; unsigned int *input;}code_vm;

这时我们把v4转换为code_vm,其中code_ip保存指令集的游标,array保存一个数组(保存一些数据)的头地址,temp保存临时数据,input指向待处理的数据头

了解了这些内容,我们开始分析disasm函数

10.png (19 KB, 下载次数: 0)

保存到相册

2018-2-20 20:59 上传

11.png (19.06 KB, 下载次数: 0)

保存到相册

2018-2-20 20:59 上传

进入后,获取code_ip游标处的数据(寄存器ebx即为code_ip)

此时读取1个字节后保存到eax中,然后再减去0xC(十进制12),最后我们得到0x64,然后又与0xF3(0xFF-0xC)比较,这个比较并没有什么重要作用,这里我们可以忽略

12.png (18.5 KB, 下载次数: 0)

保存到相册

2018-2-20 21:08 上传

向下单步跟进开始跳转

13.png (29.03 KB, 下载次数: 0)


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-87176-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 韩信
      韩信

      同时也说明12海里主权我们已经坐实了

    热点图片
    拼命载入中...