Строка скрыта внутри исходного кода сборки .s - PullRequest
0 голосов
/ 15 сентября 2018

Я действительно застрял с проблемой в нашем "хакерском" классе. Необходимо найти строку (пароль), и единственный предоставленный файл - это файл сборки .s.

Основываясь на своих чрезвычайно небольших знаниях сборки, я скомпилировал файл с gcc -S Program.s, с выводом исполняемого файла a.out. Я попытался запустить файл с ./a.out в Mac Terminal, но безуспешно - после нажатия Enter в конце команды курсор просто переходит на новую строку, ничего не находящуюся в stdout, и echo $? возвращает 0.

В конце файла сборки есть .asciz "zja4heit5k7", поэтому я подумал, что это может быть правильная строка, но безуспешно.

Я был бы бесконечно благодарен, если кто-нибудь может предоставить любые шаги , чтобы помочь мне решить проблему.

Program.s

.

    .section    __TEXT,__text,regular,pure_instructions
    .macosx_version_min 10, 13
    .globl  _r
    .p2align    4, 0x90
_r:                                     ## @r
    .cfi_startproc
## BB#0:
    pushq   %rbp
Lcfi0:
    .cfi_def_cfa_offset 16
Lcfi1:
    .cfi_offset %rbp, -16
    movq    %rsp, %rbp
Lcfi2:
    .cfi_def_cfa_register %rbp
    movq    %rdi, -8(%rbp)
    movl    $0, -12(%rbp)
    movl    $0, -12(%rbp)
LBB0_1:                                 ## =>This Inner Loop Header: Depth=1
    xorl    %eax, %eax
    movb    %al, %cl
    cmpq    $0, -8(%rbp)
    movb    %cl, -13(%rbp)          ## 1-byte Spill
    je  LBB0_3
## BB#2:                                ##   in Loop: Header=BB0_1 Depth=1
    movq    -8(%rbp), %rax
    movslq  -12(%rbp), %rcx
    movsbl  (%rax,%rcx), %edx
    cmpl    $0, %edx
    setne   %sil
    movb    %sil, -13(%rbp)         ## 1-byte Spill
LBB0_3:                                 ##   in Loop: Header=BB0_1 Depth=1
    movb    -13(%rbp), %al          ## 1-byte Reload
    testb   $1, %al
    jne LBB0_4
    jmp LBB0_9
LBB0_4:                                 ##   in Loop: Header=BB0_1 Depth=1
    movq    -8(%rbp), %rax
    movslq  -12(%rbp), %rcx
    movsbl  (%rax,%rcx), %edx
    cmpl    $97, %edx
    jl  LBB0_7
## BB#5:                                ##   in Loop: Header=BB0_1 Depth=1
    movq    -8(%rbp), %rax
    movslq  -12(%rbp), %rcx
    movsbl  (%rax,%rcx), %edx
    addl    $13, %edx
    cmpl    $122, %edx
    jg  LBB0_7
## BB#6:                                ##   in Loop: Header=BB0_1 Depth=1
    movq    -8(%rbp), %rax
    movslq  -12(%rbp), %rcx
    movsbl  (%rax,%rcx), %edx
    addl    $13, %edx
    movb    %dl, %sil
    movq    -8(%rbp), %rax
    movslq  -12(%rbp), %rcx
    movb    %sil, (%rax,%rcx)
LBB0_7:                                 ##   in Loop: Header=BB0_1 Depth=1
    jmp LBB0_8
LBB0_8:                                 ##   in Loop: Header=BB0_1 Depth=1
    movl    -12(%rbp), %eax
    addl    $1, %eax
    movl    %eax, -12(%rbp)
    jmp LBB0_1
LBB0_9:
    popq    %rbp
    retq
    .cfi_endproc

    .globl  _main
    .p2align    4, 0x90
_main:                                  ## @main
    .cfi_startproc
## BB#0:
    pushq   %rbp
Lcfi3:
    .cfi_def_cfa_offset 16
Lcfi4:
    .cfi_offset %rbp, -16
    movq    %rsp, %rbp
Lcfi5:
    .cfi_def_cfa_register %rbp
    subq    $16, %rsp
    leaq    _an(%rip), %rdi
    movl    $0, -4(%rbp)
    callq   _r
    xorl    %eax, %eax
    addq    $16, %rsp
    popq    %rbp
    retq
    .cfi_endproc

    .section    __DATA,__data
    .globl  _an                     ## @an
_an:
    .asciz  "zja4heit5k7"


.subsections_via_symbols
...