小编MCa*_*Can的帖子

如何反编译这个x87装配计算?

我正在反转的程序在浮点数和8字节整数之间进行简单的乘法运算:

section .data

va: dt 1.4426950408889634074
vb: dd 0x42424242
    dd 0x41414141

section .text
global main

main:
    fld tword[va]
    fmul qword[vb]
    ret
Run Code Online (Sandbox Code Playgroud)

gdb下的结果:

Breakpoint 1, 0x08048360 in main ()
(gdb) x/i $eip
0x8048360 <main>:       fld    TBYTE PTR ds:0x804953c
0x8048366 <main+6>:     fmul   QWORD PTR ds:0x8049546
0x804836c <main+12>:    ret
(gdb) x/gx 0x8049546
0x8049546 <vb>: 0x4141414142424242
(gdb) si
0x08048366 in main ()
0x0804836c in main ()
(gdb) info float
=>R7: Valid   0x4014c726039c95268dc4 +3262848.902912714389
Run Code Online (Sandbox Code Playgroud)

我正在尝试在C(相同的32位环境)中重新创建此程序:

#include <stdio.h>

int main() {

    unsigned long long vb = …
Run Code Online (Sandbox Code Playgroud)

c floating-point assembly reverse-engineering x87

5
推荐指数
1
解决办法
209
查看次数

标签 统计

assembly ×1

c ×1

floating-point ×1

reverse-engineering ×1

x87 ×1