disassembly

    1热度

    1回答

    最近我一直在分析一些旧代码的某些部分,其中某些情况下,函数返回的值被赋予const变量,有时变为const&。出于好奇心,我已经转向解决问题以了解差异。但要到前点让我得出一个简单的例子,有一些代码来引用: struct Data { int chunk[1024]; }; Data getData() { return Data(); } int main()

    0热度

    1回答

    在C++函数,我有下列变量: uint32_t buf = 229; //Member variable int bufSize = 0; //Member variable static constexpr const uint32_t all1 = ~((uint32_t)0); 这行代码: uint32_t result = buf & (all1 >> (32-bufSize))

    1热度

    1回答

    我最近利用了一个危险的程序,发现了x86-64架构上的gcc版本之间的差异。 注意:中gets 不当使用是不这里的问题。 如果我们用其他函数代替gets,问题不会改变。 这是源代码使用: #include <stdio.h> int main() { char buf[16]; gets(buf); return 0; } 我使用gcc.godbolt.or

    1热度

    1回答

    我正在编写一个8080模拟器的教程。据我所知,大多数的怎么回事,但反汇编的这部分不跟我登记: int Disassemble8080Op(unsigned char *codebuffer, int pc) { unsigned char *code = &codebuffer[pc]; int opbytes = 1; printf ("%04x

    0热度

    1回答

    http://lpaste.net/338173的反汇编代码(使用javap -c)如下所示:http://lpaste.net/338175,在第三列中,有200个作为“sipush”的参数,如何从a使用javassist的类文件?

    0热度

    1回答

    我已经拆卸由编译器产生的代码,我看到它已经产生的指令序列如下: mov eax, edx shr eax, 1Fh add eax, edx sar eax, 1 这是什么代码的目的是什么? 我知道 sar eax, 1 除以2,但到底是什么 shr eax, 1Fh 吗?这是否意味着EAX将是0或1,如果左边的位是0或1? 这看起来很奇怪!有人可以解释吗?

    -2热度

    2回答

    我的程序输出的编码指令,其看起来像这样: 0x81FB4300000090 0x69FC4300000090 0x81FC4300000090 0x69FD4300000090 0x81FD4300000090 0x69FE4300000090 0x81FE4300000090 0x69FF4300000090 0x81FF4300000090 0x00054400000090

    1热度

    1回答

    在(32位)ARM Linux内核中,如何区分嵌入代码段的数据和指令? 最好有一个轻量级的方法,比如位掩码,它可以很容易地实现。将一个拆装器嵌入到内核中并不明智。

    0热度

    1回答

    我有一个剥离的二进制文件进行分析。一些有趣的代码位于地址0x1234,我如何找到所有跳转到该地址? (当然,我不希望找到计算跳转到该地址,只是那些硬编码)。我不能使用简单的搜索,因为跳转指令通常使用相对偏移量进行编码,并且存在多种跳转(je,jne,jmp ...)。我现在正在x86_64/linux上使用GDB-PEDA,如果它必须是平台特定的方法。

    0热度

    1回答

    我正在尝试反汇编和修改一些用于arm的代码。拆解显示了指令宽度说明一些指令,例如: 80002be: f44f 5360 mov.w r3, #14336 ; 0x3800 80002c2: f2c4 0302 movt r3, #16386 ; 0x4002 80002c6: f44f 5260 mov.w r2, #14336 ; 0x3800 80002ca: f2c4 0202 mo