首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gdb反向调试avx2

gdb反向调试avx2
EN

Stack Overflow用户
提问于 2017-05-03 03:32:56
回答 1查看 2K关注 0票数 6

所以我有了一个支持avx2指令集的新的高级cpu。这很好,但会破坏gdb的反向调试。在没有优化的情况下编译时,代码仍然使用共享库,例如调用memset(),然后调用memset的avx2优化版本。这很好,但是gdb记录不支持avx2。

进程记录不支持地址0x7ff690dd80处的指令0xc5。

0xc5是这里的vex前缀。

反向调试在不支持avx2的cpu上工作得很好。我如何使libc等不使用avx2优化版本的库调用,以便我可以使用gdb记录,后退等等?

我试过了

代码语言:javascript
复制
LD_BIND_NOW=1
LD_HWCAP_MASK=0
compiling with -static

没有在一台旧机器上调试,我就没有想法了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-10 01:52:40

对于您在ubuntu16.04 amd64上发布的glibc2.23,完全出于同样的原因对我的二进制拼图(1位补丁)进行了改编。软件包libc6 (2.23-0ubuntu7)是从https://packages.ubuntu.com/xenial/amd64/libc6下载的,文件ld-2.23是这样编辑的(保存原始文件的副本,或者保存到不同的路径中,并更改您自己二进制文件的INTERP部分以使用不同的路径):

代码语言:javascript
复制
 83 3D 5B C9 20 00 06   cmpl $0x6, smth...
 7E 21                  jle  some_forward_label
 B8 07 00 00 00         mov $0x7, %eax
 31 C9                  xor %ecx,%ecx
 0F A2                  cpuid

有从if (cpu_features->max_cpuid >= 7) __cpuid_count (7, 0, ...调用的__get_cpu_features代码。cpuid的EAX=7叶具有检测和启用AVX2支持所需的所有信息。,所以我跳过了cpuid eax=0x7,ecx=0片段,并通过更改0x7f 0x21将其结果保存到内存的某些部分。

因此,二进制补丁类似于将83 3D xx xx xx xx 06 7E xx B8 07 00 00 00 31 C9 0F A2 (其中xx可能是任何字节)替换为83 3D xx xx xx xx 06 7F xx B8 07 00 00 00 31 C9 0F A2。您可以使用任何十六进制编辑器或一些二进制差异来完成此操作。在2.23-0ubuntu7中,这段代码位于0x0193B0-0x0193B9是7e,将改为7f。

如果您的根fs可能在没有eax=7 cpuid叶支持的情况下启动(前Intel ),或者在虚拟机中模拟这种前Intel (“奔腾D 8xx/9xx",奔腾4,奔腾M-将失败),则该修补程序将不会在全局范围内使用修补文件。

您可以将修补好的文件放置在名称与/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2的原始路径相同或更短的路径上(该路径将符号链接到/lib/x86_64-linux-gnu/ld-2.23.so文件)。例如,作为/lib_x86_64-linux-gnu_ld-linux-noAVX2.so.2。然后使用相同的十六进制编辑器将程序可执行文件(ELF)的字符串"/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2“替换为"/lib_x86_64-linux-gnu_ld-linux-noAVX2.so.2",或者使用修补程序工具套餐

代码语言:javascript
复制
cp /lib/x86_64-linux-gnu/ld-2.23.so /lib_x86_64-linux-gnu_ld-linux-noAVX2.so.2

bless  /lib_x86_64-linux-gnu_ld-linux-noAVX2.so.2
# or any other hex editor

patchelf --set-interpreter /lib_x86_64-linux-gnu_ld-linux-no-AVX2.so.2 ./my_program
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43750603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档