-
-
[求助]C++反汇编List的诸问题
-
发表于: 2015-11-17 15:59 2921
-
逆向一段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之区别,源码可能是什么样的结构呢?
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之区别,源码可能是什么样的结构呢?
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
他的文章
- [原创]linux下调用共享库非导出函数 10316
- [求助]linux下调用动态库非导出函数,能调吗,C语言 6163
- [求助]一段IDA F5的代码,求指导 3514
- [求助]C++逆向list的问题 4291
- [求助]C++反汇编List的诸问题 2922
看原图
赞赏
雪币:
留言: