⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lde.asm

📁 LDE32反汇编引擎: 我把ADE32的反汇编引擎由C++改为MASM了。网上是有一个GAS的版本
💻 ASM
📖 第 1 页 / 共 3 页
字号:
                dd C_ERROR                  ; 0E
                dd C_ERROR                  ; 0F
                dd C_ERROR                  ; 10
                dd C_ERROR                  ; 11
                dd C_ERROR                  ; 12
                dd C_ERROR                  ; 13
                dd C_ERROR                  ; 14
                dd C_ERROR                  ; 15
                dd C_ERROR                  ; 16
                dd C_ERROR                  ; 17
                dd C_ERROR                  ; 18
                dd C_ERROR                  ; 19
                dd C_ERROR                  ; 1A
                dd C_ERROR                  ; 1B
                dd C_ERROR                  ; 1C
                dd C_ERROR                  ; 1D
                dd C_ERROR                  ; 1E
                dd C_ERROR                  ; 1F
                dd C_ERROR                  ; 20
                dd C_ERROR                  ; 21
                dd C_ERROR                  ; 22
                dd C_ERROR                  ; 23
                dd C_ERROR                  ; 24
                dd C_ERROR                  ; 25
                dd C_ERROR                  ; 26
                dd C_ERROR                  ; 27
                dd C_ERROR                  ; 28
                dd C_ERROR                  ; 29
                dd C_ERROR                  ; 2A
                dd C_ERROR                  ; 2B
                dd C_ERROR                  ; 2C
                dd C_ERROR                  ; 2D
                dd C_ERROR                  ; 2E
                dd C_ERROR                  ; 2F
                dd C_ERROR                  ; 30
                dd C_ERROR                  ; 31
                dd C_ERROR                  ; 32
                dd C_ERROR                  ; 33
                dd C_ERROR                  ; 34
                dd C_ERROR                  ; 35
                dd C_ERROR                  ; 36
                dd C_ERROR                  ; 37
                dd C_ERROR                  ; 38
                dd C_ERROR                  ; 39
                dd C_ERROR                  ; 3A
                dd C_ERROR                  ; 3B
                dd C_ERROR                  ; 3C
                dd C_ERROR                  ; 3D
                dd C_ERROR                  ; 3E
                dd C_ERROR                  ; 3F
                dd C_ERROR                  ; 40
                dd C_ERROR                  ; 41
                dd C_ERROR                  ; 42
                dd C_ERROR                  ; 43
                dd C_ERROR                  ; 44
                dd C_ERROR                  ; 45
                dd C_ERROR                  ; 46
                dd C_ERROR                  ; 47
                dd C_ERROR                  ; 48
                dd C_ERROR                  ; 49
                dd C_ERROR                  ; 4A
                dd C_ERROR                  ; 4B
                dd C_ERROR                  ; 4C
                dd C_ERROR                  ; 4D
                dd C_ERROR                  ; 4E
                dd C_ERROR                  ; 4F
                dd C_ERROR                  ; 50
                dd C_ERROR                  ; 51
                dd C_ERROR                  ; 52
                dd C_ERROR                  ; 53
                dd C_ERROR                  ; 54
                dd C_ERROR                  ; 55
                dd C_ERROR                  ; 56
                dd C_ERROR                  ; 57
                dd C_ERROR                  ; 58
                dd C_ERROR                  ; 59
                dd C_ERROR                  ; 5A
                dd C_ERROR                  ; 5B
                dd C_ERROR                  ; 5C
                dd C_ERROR                  ; 5D
                dd C_ERROR                  ; 5E
                dd C_ERROR                  ; 5F
                dd C_ERROR                  ; 60
                dd C_ERROR                  ; 61
                dd C_ERROR                  ; 62
                dd C_ERROR                  ; 63
                dd C_ERROR                  ; 64
                dd C_ERROR                  ; 65
                dd C_ERROR                  ; 66
                dd C_ERROR                  ; 67
                dd C_ERROR                  ; 68
                dd C_ERROR                  ; 69
                dd C_ERROR                  ; 6A
                dd C_ERROR                  ; 6B
                dd C_ERROR                  ; 6C
                dd C_ERROR                  ; 6D
                dd C_ERROR                  ; 6E
                dd C_ERROR                  ; 6F
                dd C_ERROR                  ; 70
                dd C_ERROR                  ; 71
                dd C_ERROR                  ; 72
                dd C_ERROR                  ; 73
                dd C_ERROR                  ; 74
                dd C_ERROR                  ; 75
                dd C_ERROR                  ; 76
                dd C_ERROR                  ; 77
                dd C_ERROR                  ; 78
                dd C_ERROR                  ; 79
                dd C_ERROR                  ; 7A
                dd C_ERROR                  ; 7B
                dd C_ERROR                  ; 7C
                dd C_ERROR                  ; 7D
                dd C_ERROR                  ; 7E
                dd C_ERROR                  ; 7F
                dd C_DATA66+C_REL           ; 80
                dd C_DATA66+C_REL           ; 81
                dd C_DATA66+C_REL           ; 82
                dd C_DATA66+C_REL           ; 83
                dd C_DATA66+C_REL           ; 84
                dd C_DATA66+C_REL           ; 85
                dd C_DATA66+C_REL           ; 86
                dd C_DATA66+C_REL           ; 87
                dd C_DATA66+C_REL           ; 88
                dd C_DATA66+C_REL           ; 89
                dd C_DATA66+C_REL           ; 8A
                dd C_DATA66+C_REL           ; 8B
                dd C_DATA66+C_REL           ; 8C
                dd C_DATA66+C_REL           ; 8D
                dd C_DATA66+C_REL           ; 8E
                dd C_DATA66+C_REL           ; 8F
                dd C_MODRM                  ; 90
                dd C_MODRM                  ; 91
                dd C_MODRM                  ; 92
                dd C_MODRM                  ; 93
                dd C_MODRM                  ; 94
                dd C_MODRM                  ; 95
                dd C_MODRM                  ; 96
                dd C_MODRM                  ; 97
                dd C_MODRM                  ; 98
                dd C_MODRM                  ; 99
                dd C_MODRM                  ; 9A
                dd C_MODRM                  ; 9B
                dd C_MODRM                  ; 9C
                dd C_MODRM                  ; 9D
                dd C_MODRM                  ; 9E
                dd C_MODRM                  ; 9F     
                dd 0                        ; A0
                dd 0                        ; A1
                dd 0                        ; A2
                dd C_MODRM                  ; A3
                dd C_MODRM+C_DATA1          ; A4
                dd C_MODRM                  ; A5
                dd C_ERROR                  ; A6
                dd C_ERROR                  ; A7
                dd 0                        ; A8
                dd 0                        ; A9
                dd 0                        ; AA
                dd C_MODRM                  ; AB
                dd C_MODRM+C_DATA1          ; AC
                dd C_MODRM                  ; AD
                dd C_ERROR                  ; AE
                dd C_MODRM                  ; AF
                dd C_MODRM                  ; B0
                dd C_MODRM                  ; B1
                dd C_MODRM                  ; B2
                dd C_MODRM                  ; B3
                dd C_MODRM                  ; B4
                dd C_MODRM                  ; B5
                dd C_MODRM                  ; B6
                dd C_MODRM                  ; B7
                dd C_ERROR                  ; B8
                dd C_ERROR                  ; B9
                dd C_MODRM+C_DATA1          ; BA
                dd C_MODRM                  ; BB
                dd C_MODRM                  ; BC
                dd C_MODRM                  ; BD
                dd C_MODRM                  ; BE
                dd C_MODRM                  ; BF
                dd C_MODRM                  ; C0
                dd C_MODRM                  ; C1
                dd C_ERROR                  ; C2
                dd C_ERROR                  ; C3
                dd C_ERROR                  ; C4
                dd C_ERROR                  ; C5
                dd C_ERROR                  ; C6
                dd C_ERROR                  ; C7
                dd 0                        ; C8
                dd 0                        ; C9
                dd 0                        ; CA
                dd 0                        ; CB
                dd 0                        ; CC
                dd 0                        ; CD
                dd 0                        ; CE
                dd 0                        ; CF
                dd C_ERROR                  ; D0
                dd C_ERROR                  ; D1
                dd C_ERROR                  ; D2
                dd C_ERROR                  ; D3
                dd C_ERROR                  ; D4
                dd C_ERROR                  ; D5
                dd C_ERROR                  ; D6
                dd C_ERROR                  ; D7
                dd C_ERROR                  ; D8
                dd C_ERROR                  ; D9
                dd C_ERROR                  ; DA
                dd C_ERROR                  ; DB
                dd C_ERROR                  ; DC
                dd C_ERROR                  ; DD
                dd C_ERROR                  ; DE
                dd C_ERROR                  ; DF
                dd C_ERROR                  ; E0
                dd C_ERROR                  ; E1
                dd C_ERROR                  ; E2
                dd C_ERROR                  ; E3
                dd C_ERROR                  ; E4
                dd C_ERROR                  ; E5
                dd C_ERROR                  ; E6
                dd C_ERROR                  ; E7
                dd C_ERROR                  ; E8
                dd C_ERROR                  ; E9
                dd C_ERROR                  ; EA
                dd C_ERROR                  ; EB
                dd C_ERROR                  ; EC
                dd C_ERROR                  ; ED
                dd C_ERROR                  ; EE
                dd C_ERROR                  ; EF
                dd C_ERROR                  ; F0
                dd C_ERROR                  ; F1
                dd C_ERROR                  ; F2
                dd C_ERROR                  ; F3
                dd C_ERROR                  ; F4
                dd C_ERROR                  ; F5
                dd C_ERROR                  ; F6
                dd C_ERROR                  ; F7
                dd C_ERROR                  ; F8
                dd C_ERROR                  ; F9
                dd C_ERROR                  ; FA
                dd C_ERROR                  ; FB
                dd C_ERROR                  ; FC
                dd C_ERROR                  ; FD
                dd C_ERROR                  ; FE
                dd C_ERROR                  ; FF                                                                                              
;; ----------------------------------------
;; code segment
;; ----------------------------------------
.code
Start:

disasm proc uses ebx ecx edx esi edi opcode0 : LPVOID, diza : LPVOID
;; This stuff is used to get instructino length and parse it into
;; prefix, opcode, modregr/m, address, immediate, etc.
;; failed:eax = 0
    LOCAL flag : DWORD
    LOCAL mod_i : BYTE
    LOCAL rm_i : BYTE
    ;; esi -> opcode
    ;; edi -> diza
    ;; edx -> lde32_table
    ;; al -> c
    ;; ebx -> t
    ;; ecx -> tmp variable
    
    mov esi, opcode0
    
    ;; memset(diza, 0x00, sizeof(DISASM_STRUCT));
    mov edi, diza
    mov ecx, sizeof DISASM_STRUCT
    xor eax, eax
    cld
    rep stosb
    
    mov edi, diza
    assume edi : ptr DISASM_STRUCT
    mov al, 04h
    mov byte ptr [edi].disasm_defaddr, al
    mov byte ptr [edi].disasm_defdata, al
    
    mov ax, word ptr [esi]
    test ax, ax
    jz FailedExit
    sub ax, 0FFFFh
    jz FailedExit

    ;; start handle prefix
    
    xor eax, eax
    mov flag, eax

    lea edx, lde32_table

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -