欢迎您!“一八软件网”是上海趋唯事软件有限公司的在线软件销售和服务网站
Hex-Rays Decompiler
将二进制程序反编译为C语言程序,强悍
  • 产品编号:2013-662
  • 产品类型:开发工具
  • 当前版本:v2.1
  • 产品厂商:Hex-Rays SA
概述:IDA又一个开发架构,任何人都可以来开发插件,Hex-Rays Decompiler就是其中一个很好的例子。Hex-Rays Decompiler是一个二进制软件分许工具,它可以把可执行程序转换成我们可读的类似C的伪代码,相比低级的汇编,C语言作为高级语言,可以极大提高我们的代码阅读效率。

Decompilers v2.1

x64 decompiler已经支持了!更新说明请看 

http://www.commuch.com/p/tools/programming/complier/Hex-Rays-Decompiler/Update.aspx

另增加了该款型号的报价。


Decompilation 对比 Disassembly,这个文档说明了汇编数十行代码反编译成C代码只有一行。

Hex-Rays Decompiler带来的好处

  • 简明:减少阅读时间,提高工作效率
  • 结构:程序逻辑更加明显
  • 动态:变量名和类型可以随时可改变
  • 熟悉:不需要学习汇编语言
  • 超酷:有史以来开发的最先进的反编译!
快速生成伪代码,我们以足够快的技术在几秒钟内完成99%的功能分析。



目前反编译器支持32位编译器生成的x86和ARM处理器的代码。我们计划将它移植到其他平台上,并添加了一个计划性的API。这将使我们的客户能够实现自己的分析方法。漏洞搜索,软件验证,覆盖分析是立即浮现在脑海中的方向。

反编译器在MS Windows上运行。 GUI和文本IDA版本都支持。在文本模式下,只有批处理操作是可用的。

下面是我们一个反汇编和反编译后的代码比较
 汇编代码反编译C代码
; == S U B R O U T I N E ===




; int __cdecl sub_4061C0(char *Str, char *Dest)
sub_4061C0      proc near   ; CODE XREF: sub_4062F0+15p
                                        ; sub_4063D4+21p ...


Str             = dword ptr  4
Dest            = dword ptr  8


                push    esi
                push    offset aSmtp_   ; "smtp."
                push    [esp+8+Dest]    ; Dest
                call    _strcpy
                mov     esi, [esp+0Ch+Str]
                push    esi             ; Str
                call    _strlen
                add     esp, 0Ch
                xor     ecx, ecx
                test    eax, eax
                jle     short loc_4061ED


loc_4061E2:  ; CODE XREF: sub_4061C0+2Bj
                cmp     byte ptr [ecx+esi], 40h
                jz      short loc_4061ED
                inc     ecx
                cmp     ecx, eax
                jl      short loc_4061E2


loc_4061ED:   ; CODE XREF: sub_4061C0+20j
                                        ; sub_4061C0+26j
                dec     eax
                cmp     ecx, eax
                jl      short loc_4061F6
                xor     eax, eax
                pop     esi
                retn
; ---------------------------------------


loc_4061F6: ; CODE XREF: sub_4061C0+30j
                lea     eax, [ecx+esi+1]
                push    eax             ; Source
                push    [esp+8+Dest]    ; Dest
                call    _strcat
                pop     ecx
                pop     ecx
                push    1
                pop     eax
                pop     esi
                retn
sub_4061C0      endp
signed int __cdecl sub_4061C0(char *Str, char *Dest)
{
  int len; // eax@1
  int i; // ecx@1
  char *str2; // esi@1
  signed int result; // eax@5


  strcpy(Dest, "smtp.");
  str2 = Str;
  len = strlen(Str);
  for ( i = 0; i < len; ++i )
  {
    if ( str2[i] == 64 )
      break;
  }
  if ( i < len - 1 )
  {
    strcat(Dest, &str2[i + 1]);
    result = 1;
  }
  else
  {
    result = 0;
  }
  return result;
}
  

这样,右边的代码是否很容读懂!

----------------------------------------------------------------

decompiler 的局限性

The decompiler comes in three different flavors:
  • x86 decompiler (32-bit code)
  • x64 decompiler (64-bit code)
  • ARM decompiler (32-bit code)
Currently the decompiler can handle compiler generated code. Manually crafted code may be decompiled too but the results are usually worse than for compiler code. Support for other processors will eventually be added (no deadlines are available, sorry).


Below are the most important limitations of our decompilers (all processors):
  • exception handling is not supported
  • type recovery is not performed
  • global program analysis is not performed
Limitations specific to x86:
  • only 32-bit code can be analyzed with idaq
Limitations specific to x64:
  • only 64-bit code can be analyzed with idaq64
Limitations specific to ARM:
  • only 32-bit code can be analyzed with idaq
  • floating point instructions are not supported
  • VFP/SIMD/Neon/... instructions are not supported
  • functions having an argument that is passed partially on registers and partially on the stack are not supported (e.g. int64 passed in R3 and on the stack)

  • 快速反编译成C-样式的伪代码
  • 支持32位的x86和ARM处理器
  • 能够快速修改变量名,提高可读性
  • 最版版2.0支持了x64处理器
  • IDA

    最强大的反汇编工具,支持大量的处理器

  • 分享到:
  • 上海趋唯事软件有限公司
    销售:021 - 3211 0920
    技术:021 - 3211 0930
    邮件:sales(#)commuch.com
联系我们: 021 - 3211 0920 , 3211 0930