首页
社区
课程
招聘
[ZT]Hacker Disassembler Engine v0.06
发表于: 2007-2-11 16:23 3785

[ZT]Hacker Disassembler Engine v0.06

2007-2-11 16:23
3785
------------------------------------------------------
                      Hacker Disassembler Engine version 0.06
               ------------------------------------------------------

====< Description >================================================================

Hacker Disassembler Engine, or HDE, is a small disassembler engine, which intend to
code  analyse.  HDE  get length of command, prefixes, ModR/M and SIB bytes, opcode,
immediates,  displacements,  relative  addresses, etc. For example, you can use HDE
when   writing  unpackers  or  decryptors  executable  files,  because  more  other
disassemblers  too  big,  get  only  disasm  listing  and  aren't intended for code
analysis, but more simple length disassemblers usually get too little info. HDE get
enough  info  to  analyse,  but  it  has  very small size. HDE package include DLL,
object files in difference formats, header files and and assembler source.

   + support MMX, SSE, SSE2, SSE3, 3DNow! instructions
   + high-speed & small size (~1 kb)
   + compatibility with most coding language

====< Usage >======================================================================

To disassemble should call "hde_disasm" function:

    unsigned long hde_disasm(
        const void *pCode         // pointer to code
        HDE_STRUCT *pHDE_STRUCT   // pointer to structure HDE_STRUCT
        );

This function return length of command and fill structure HDE_STRUCT:

    typedef struct {
        unsigned char   len;        // length of command
        unsigned char   p_rep;      // rep, rep(n)z prefix: 0xF2 or 0xF3
        unsigned char   p_lock;     // lock prefix 0xF0
        unsigned char   p_seg;      // segment prefix: 0x2E, 0x36, 0x3E, 0x26, 0x64, 0x65
        unsigned char   p_66;       // prefix 0x66
        unsigned char   p_67;       // prefix 0x67
        unsigned char   opcode;     // opcode
        unsigned char   opcode2;    // second opcode (if first opcode equal 0x0F)
        unsigned char   modrm;      // ModR/M byte
        unsigned char   modrm_mod;  //  - mod byte of ModR/M
        unsigned char   modrm_reg;  //  - reg byte of ModR/M
        unsigned char   modrm_rm;   //  - r/m byte of ModR/M
        unsigned char   sib;        // SIB byte
        unsigned char   sib_scale;  //  - scale byte of SIB
        unsigned char   sib_index;  //  - index byte of SIB
        unsigned char   sib_base;   //  - base byte of SIB
        unsigned char   imm8;       // immediate imm8
        unsigned short  imm16;      // immediate imm16
        unsigned long   imm32;      // immediate imm32
        unsigned char   disp8;      // displacement disp8
        unsigned short  disp16;     // displacement disp16 (if prefix 0x67 exist)
        unsigned long   disp32;     // displacement disp32
        unsigned char   rel8;       // relative address rel8
        unsigned short  rel16;      // relative address rel16 (if prefix 0x66 exist)
        unsigned long   rel32;      // relative address rel32
    } HDE_STRUCT;

Fields "opcode"  and  "len" always exist, other are optional and depend of command.
If field's value equal zero, then it isn't existing.

Note: HDE work only with 32-bit commands of x86 processors !

====< Contacts >===================================================================

   Author:    Veacheslav Patkov
   E-mail:    patkov-mail@mail.ru
   Web-site:  http://patkov-site.narod.ru/eng.html

Please excuse my english... It's so bad
Improvements, suggestions and bugfixes are welcomed.

转至:UNPACKCN  感谢:SiMON

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 97697
活跃值: (200839)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
2
sustain.
2007-2-11 16:26
0
雪    币: 209
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
Great
2007-2-11 16:28
0
游客
登录 | 注册 方可回帖
返回
//