все заметки

x86 дизассемблер онлайн (32/64bit)

2024.12.22

В связи с большим заросом на дизасм онлайн, выкатываю полноценный дизассемблер на основе Capstone.

x86 архитектура и 32/64 разрядности (битности).

Это не дебаггер.

Форматирование и пробелы игнорируются. Отбираются только HEX коды и не более тысячи: [0-9A-F].

; Для примера один и тот же код в двух режимах\n\n; 64-bit\n0x0401000: MOVABS      rsi, 0x4030f1        ; 48 BE F1 30 40 00 00 00 00 00\n0x040100A: XOR         rcx, rcx             ; 48 31 C9\n0x040100D: MOV         rdx, rsi             ; 48 89 F2\n0x0401010: MOV         r8d, 0xff            ; 41 B8 FF 00 00 00\n0x0401016: CALL        0x40111b             ; E8 00 01 00 00\n0x040101B: LEA         rsi, [rax + rsi - 4] ; 48 8D 74 30 FC\n0x0401020: PUSH        rsi                  ; 56\n0x0401021: MOV         ecx, 4               ; B9 04 00 00 00\n0x0401026: STD                              ; FD\n0x0401027: MOVABS      r10, 0x403021        ; 49 BA 21 30 40 00 00 00 00 00\n0x0401031: MOVABS      r11, 0x403001        ; 49 BB 01 30 40 00 00 00 00 00\n0x040103B: MOV         rsi, qword ptr [rsp] ; 48 8B 34 24\n0x040103F: MOV         r15d, 4              ; 41 BF 04 00 00 00\n0x0401045: REPNE SCASB al, byte ptr [rdi]   ; F2 AE\n0x0401047: JE          0x40104b             ; 42 74 01\n0x040104A: POP         rbx                  ; 5B\n0x040104B: POP         rbp                  ; 5D\n0x040104C: POP         rdi                  ; 5F\n0x040104D: POP         rsi                  ; 5E\n0x040104E: POP         r14                  ; 41 5E\n\n; 32-bit\n0x0401000: DEC         eax                   ; 48\n0x0401001: MOV         esi, 0x4030f1         ; BE F1 30 40 00\n0x0401006: ADD         byte ptr [eax], al    ; 00 00\n0x0401008: ADD         byte ptr [eax], al    ; 00 00\n0x040100A: DEC         eax                   ; 48\n0x040100B: XOR         ecx, ecx              ; 31 C9\n0x040100D: DEC         eax                   ; 48\n0x040100E: MOV         edx, esi              ; 89 F2\n0x0401010: INC         ecx                   ; 41\n0x0401011: MOV         eax, 0xff             ; B8 FF 00 00 00\n0x0401016: CALL        0x40111b              ; E8 00 01 00 00\n0x040101B: DEC         eax                   ; 48\n0x040101C: LEA         esi, [eax + esi - 4]  ; 8D 74 30 FC\n0x0401020: PUSH        esi                   ; 56\n0x0401021: MOV         ecx, 4                ; B9 04 00 00 00\n0x0401026: STD                               ; FD\n0x0401027: DEC         ecx                   ; 49\n0x0401028: MOV         edx, 0x403021         ; BA 21 30 40 00\n0x040102D: ADD         byte ptr [eax], al    ; 00 00\n0x040102F: ADD         byte ptr [eax], al    ; 00 00\n0x0401031: DEC         ecx                   ; 49\n0x0401032: MOV         ebx, 0x403001         ; BB 01 30 40 00\n0x0401037: ADD         byte ptr [eax], al    ; 00 00\n0x0401039: ADD         byte ptr [eax], al    ; 00 00\n0x040103B: DEC         eax                   ; 48\n0x040103C: MOV         esi, dword ptr [esp]  ; 8B 34 24\n0x040103F: INC         ecx                   ; 41\n0x0401040: MOV         edi, 4                ; BF 04 00 00 00\n0x0401045: REPNE SCASB al, byte ptr es:[edi] ; F2 AE\n0x0401047: INC         edx                   ; 42\n0x0401048: JE          0x40104b              ; 74 01\n0x040104A: POP         ebx                   ; 5B\n0x040104B: POP         ebp                   ; 5D\n0x040104C: POP         edi                   ; 5F\n0x040104D: POP         esi                   ; 5E\n0x040104E: INC         ecx                   ; 41\n0x040104F: POP         esi                   ; 5E