反汇编笔记——对象/数组/链表的汇编形态

对象/数组/链表的汇编形态

定义:由高级编程语言构筑的程序中往往会出现大量的对象/数组/链表等数据结构,特别的,当程序的构筑使用了面向对象思想时,程序中传输的数据将大量的被对象封装,因此对于各类数据结构的汇编形态的熟悉是必要的。

示例1:对象数组示例

PS1:如上图所示,在找到一个数组里的某一个对象中的属性的地址如以上的[[[[0x141925158]+30]+rdx*8+10]+188]+E8 (刚找到时其只是一个普通的地址如0x7FFCDD712219,通过逆向搜索可得到类似形态的组合地址。一个基址在经过多次运算之后最终指向一个保存在对象数组中的对象的属性)后,对其进行分析。

PS2:由[[[[0x141925158]+30]+rdx*8+10]+188]+E8指向对象的一个属性可知,[[[[0x141925158]+30]+rdx*8+10]+188]应当为该对象的属性表的起始地址;则[[[0x141925158]+30]+rdx*8+10]+188应当为该对象的起始地址;进一步推断出[[[0x141925158]+30]+rdx*8+10]应当为该对象数组的对象列表的起始地址;则[[0x141925158]+30]为该对象数组的起始地址,[0x141925158]+30为数组的头部中存储的数值。

示例2:对象数组头部的内存视角

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值