Средства обратной разработки: из ASM кода нужно понять, по какой формуле производится расчет - Assembler
Формулировка задачи:
Здравствуйте! Помогите разобраться с заданием.
Дана программа, в ней есть функция f с аргументами x y z, которая проводит расчет по введенным числам. После декомпиляции был получен ASM код.
Задача: Из ASM кода нужно понять, по какой формуле производится расчет.
400576: 55 push %rbp 400577: 48 89 e5 mov %rsp,%rbp 40057a: 89 7d fc mov %edi,-0x4(%rbp) 40057d: 89 75 f8 mov %esi,-0x8(%rbp) 400580: 89 55 f4 mov %edx,-0xc(%rbp) 400583: 8b 45 fc mov -0x4(%rbp),%eax 400586: 0f af 45 f8 imul -0x8(%rbp),%eax 40058a: 89 c1 mov %eax,%ecx 40058c: 8b 45 f8 mov -0x8(%rbp),%eax 40058f: 0b 45 fc or -0x4(%rbp),%eax 400592: 89 c6 mov %eax,%esi 400594: 8b 45 f4 mov -0xc(%rbp),%eax 400597: 99 cltd 400598: f7 fe idiv %esi 40059a: 29 c1 sub %eax,%ecx 40059c: 89 c8 mov %ecx,%eax 40059e: 83 c0 05 add $0x5,%eax 4005a1: 5d pop %rbp 4005a2: c3 retq
Решение задачи: «Средства обратной разработки: из ASM кода нужно понять, по какой формуле производится расчет»
textual
Листинг программы
push rbp mov rbp,rsp <-- пролог функции mov [rbp-4],edi передаем в локальные переменные значения из edi, esi, edx mov [rbp-8],esi mov [rbp-0Ch],edx mov eax,[rbp-4] ; eax=edi imul eax,[rbp-08] ; eax=edi*esi mov ecx,eax ; ecx=edi*esi mov eax,[rbp-8] ; eax=esi or eax,[rbp-4] ; eax= edi or esi mov esi,eax ; esi = edi or esi mov eax,[rbp-0Ch] ; eax = edx cltd ; cdq idiv esi ; edx:eax/esi sub ecx,eax ; ecx=ecx-eax mov eax,ecx ; eax=ecx-eax add eax,5 ; eax=ecx-eax+5 pop rbp <-- эпилог функции ret <-- выход из функции
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д