将 ASSEMBLY 翻译为 C

逆向工程 部件 C
2021-06-13 06:17:17

如何将代码汇编翻译成C?我的汇编代码很差。例如:

mov     dword ptr [ebp+data], 612E2F47h
mov     dword ptr [ebp+data+4], 5B2A451Ch
mov     dword ptr [ebp+data+8], 6E6B5E18h
mov     dword ptr [ebp+data+0Ch], 5C121F67h
mov     dword ptr [ebp+data+10h], 0D5E2223h
mov     dword ptr [ebp+data+14h], 5E0A5F1Dh
mov     word ptr [ebp+data+18h], 858h
mov     word ptr [ebp+data+1Ah], 0h
xor     eax, eax                
loc_4012B2:                             
add     [ebp+eax+data], al      
inc     eax                     
cmp     eax, 1Ah                
jl      short loc_4012B2
1个回答

这是您问题的确切答案。

  1. 转到http://www.tutorialspoint.com/compile_assembly_online.php

  2. 双击屏幕左上角的 main.asm

  3. 将您的代码片段复制到文本窗口。您需要添加数据定义并进行一些调整,我得到的汇编代码是

    section     .text
    global main
    main:
    
    xor ebp,ebp
    
    mov      dword [ebp+data], 0x612E2F47
    mov      dword [ebp+data+4], 0x5B2A451C
    mov      dword [ebp+data+8], 0x6E6B5E18
    mov      dword [ebp+data+0Ch], 0x5C121F67
    mov      dword [ebp+data+10h], 0x0D5E2223
    mov      dword [ebp+data+14h], 0x5E0A5F1D 
    mov      dword [ebp+data+18h], 0x858
    mov      dword [ebp+data+1Ah], 0x0
    xor     eax, eax                
    loc_4012B2:                             
    add     [ebp+eax+data], al      
    inc     eax                     
    cmp     eax, 1Ah                
    jl      short loc_4012B2
    nop
    nop
    
    
    section     .data
    
    data    db 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
    
  4. 按编译按钮

  5. 转到项目菜单,下载项目,demo从存档中提取文件

  6. 转到retdec 反编译器站点

  7. 选择可执行输入文件并在那里上传您的二进制文件

  8. 按反编译

  9. 查看结果

我不会说这个翻译成 C 代码的结果太容易理解了。另外我想指出的是,学习 6 个汇编命令的时间要少得多。