首页
社区
课程
招聘
[求助]C++反汇编List的诸问题
发表于: 2015-11-17 15:59 2892

[求助]C++反汇编List的诸问题

2015-11-17 15:59
2892
逆向一段C++代码如下:
    do
    {
      v3 = (const sagem_bio::fe::ElementaryTemplate **)v2;
      v4 = operator new(0x20uLL);
      if ( v4 != -16 )
      {
        *(_QWORD *)(v4 + 16) = *((_QWORD *)v2 + 2);
        *(_DWORD *)(v4 + 24) = *((_DWORD *)v2 + 6);
      }
      std::_List_node_base::hook((std::_List_node_base *)v4, (sagem_bio::fe::ElementaryTemplate *)((char *)this + 24));
      v2 = *(sagem_bio::fe::ElementaryTemplate **)v2;
    }
    while ( (const sagem_bio::fe::ElementaryTemplate *)((char *)a2 + 24) != *v3 );

这个do....while循环实际实现的是一个List或者类似与list的结构,我自己写了个list反汇编的代码如下:

  for ( *(_QWORD *)(v3 + 32) = *(_QWORD *)(v2 + 32); v4 != a2 + 24; v4 = *(_QWORD *)v4 )
  {
    v5 = operator new(0x18uLL);
    if ( v5 != -16 )
      *(_DWORD *)(v5 + 16) = *(_DWORD *)(v4 + 16);
    LODWORD(v3) = std::__detail::_List_node_base::_M_hook(v5, a1 + 24);
  }

可以看到代码中的区别有2点:
1.std::_List_node_base::hook和std::___detail::_List_node_base::_M_hook
2.源码中每次循环添加2个元素,而我自己写的list中每次添加一个元素。
3.红色字体部分,开辟的空间大小不一样

请高手帮我分析下,源码中这个是list类型吗,为什么有std::_List_node_base::hook和std::___detail::_List_node_base::_M_hook之区别,源码可能是什么样的结构呢?

[峰会]看雪.第八届安全开发者峰会10月23日上海龙之梦大酒店举办!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//