如题,
我用C++写壳的stub
壳的stub里用到了一个lib,这个lib有一个静态局部变量,该变量类型是一个类,导致..
由于编译器在给这个静态对象初始化的时候,除了调用构造函数外,还会调用一个atexit
004050E5 mov ecx,offset __cfltcvt_tab+544h (0042d85c)
004050EA call @ILT+25(A::A) (0040101e) 构造函数
004050EF push offset $E23 (00405190)
004050F4 call atexit (00405d30) 注意这里
004050F9 add esp,4
这个atexit 应该是为了在最后析构程序中定义的一些静态和全局变量.
而我把这个stub加给被加壳的程序后,执行到call 这个atexit会出现致命错误,
在一个貌似跟堆内存有关的函数?
RtlAllocateHeap
7C9305D4 > 68 04020000 push 204
7C9305D9 68 F006937C push 7C9306F0
7C9305DE E8 DFE7FFFF call 7C92EDC2
7C9305E3 8B5D 08 mov ebx, dword ptr [ebp+8]
7C9305E6 895D E4 mov dword ptr [ebp-1C], ebx
7C9305E9 33FF xor edi, edi
7C9305EB 897D D0 mov dword ptr [ebp-30], edi
7C9305EE C645 E2 00 mov byte ptr [ebp-1E], 0
7C9305F2 897D CC mov dword ptr [ebp-34], edi
7C9305F5 8B45 0C mov eax, dword ptr [ebp+C]
7C9305F8 0B43 10 or eax, dword ptr [ebx+10]
请问,有朋友能提点一二么?
或者说如果我则个lib不使用静态变量,有什么办法达到类似静态变量的效果?
[课程]Linux pwn 探索篇!