Evaluating bids

Engenharia Inversa

Published on the March 12, 2019 in IT & Programming

About this project

Open

Foi obtido um arquivo binário executável que, após sua execução, mostra um texto com um código numérico. Este código é gerado a partir de uma string de texto armazenada no próprio binário.  Depois de listar o código asm, o arquivo binário foi excluído e não é possível acessá-lo, apenas o código asm copiado no final do exercício.

É  Necessário ser capaz de reutilizar o referido algoritmo de geração de código, e é por isso que o trabalho de engenharia reversa é necessário para analisar o binário e reconstruir o código fonte de tal maneira que ele possa ser modificado e recompilado corretamente.


Pretendemos que:

divida o código em blocos básicos.
(Leve em conta as quebras existentes dentro da função e divida as linhas em blocos básicos de código.)

Faça o diagrama de fluxo com os blocos básicos. 
(Uma vez que os blocos básicos do exercício anterior tenham sido obtidos, execute o fluxograma juntando os blocos básicos com setas.)


Existe alguma estrutura de controle?
Indica quais blocos básicos estão envolvidos.

Converta o código completo da função para o código C. 
Com o que você aprendeu sobre a reconstrução de código, converta essa função main () em código C. Em <+36> o endereço da string indicada em negrito é carregado em eax.

"3jd9cjfk98hnd"
Em <+110> o endereço da string indicada em vermelho é carregado em eax "[+] Código gerado:% i \ n"

Compile o código gerado e indique o código resultante após sua execução.
Compile em 32bits adicionando a opção -m32 como indicado no seguinte comando:  $ gcc source.c -o source -m32  Uma vez executado, um texto aparecerá na tela, indicando o texto completo.

Modifique o código fonte em C, para que ele gere um novo código a partir de outra string.
Modifique a string <+36> no código C, pela seguinte string: "Parabéns!"  Compile o código C, execute e indique o texto completo obtido.
















Código asm – x86 32 bits
dump of assembler code for function main:
0x0000054d <+0>: lea ecx,[esp+0x4]
0x00000551 <+4>: and esp,0xfffffff0
0x00000554 <+7>: push dword ptr [ecx-0x4]
0x00000557 <+10>: push ebp
0x00000558 <+11>: mov ebp,esp
0x0000055a <+13>: push ebx
0x0000055b <+14>: push ecx
0x0000055c <+15>: sub esp,0x10
0x0000055f <+18>: call 0x450 <__x86.Get_pc_thunk.bx>
0x00000564 <+23>: add ebx,0x1a9c
0x0000056a <+29>: mov dword ptr [ebp-0x10],0x0
0x00000571 <+36>: lea eax,[ebx-0x19a0] ; “3jd9cjfk98hnd”
0x00000577 <+42>: mov dword ptr [ebp-0x14],eax
0x0000057a <+45>: sub esp,0xc
0x0000057d <+48>: push dword ptr [ebp-0x14]
0x00000580 <+51>: call 0x3e0 <strlen@plt>
0x00000585 <+56>: add esp,0x10
0x00000588 <+59>: mov dword ptr [ebp-0x18],eax
0x0000058b <+62>: mov dword ptr [ebp-0xc],0x0
0x00000592 <+69>: jmp 0x5ad <main+96>
0x00000594 <+71>: mov edx,dword ptr [ebp-0xc]
0x00000597 <+74>: mov eax,dword ptr [ebp-0x14]
0x0000059a <+77>: add eax,edx
0x0000059c <+79>: movzx eax,byte ptr [eax]
0x0000059f <+82>: movsx eax,al
0x000005a2 <+85>: imul eax,dword ptr [ebp-0x18]
0x000005a6 <+89>: add dword ptr [ebp-0x10],eax
0x000005a9 <+92>: add dword ptr [ebp-0xc],0x1
0x000005ad <+96>: mov eax,dword ptr [ebp-0xc]
0x000005b0 <+99>: cmp eax,dword ptr [ebp-0x18]
0x000005b3 <+102>: jl 0x594 <main+71>
0x000005b5 <+104>: sub esp,0x8
0x000005b8 <+107>: push dword ptr [ebp-0x10]
0x000005bb <+110>: lea eax,[ebx-0x1992] ; “[+] codigo generado: %i\n”
0x000005c1 <+116>: push eax
0x000005c2 <+117>: call 0x3d0 <printf@plt>
0x000005c7 <+122>: add esp,0x10
0x000005ca <+125>: mov eax,0x0
0x000005cf <+130>: lea esp,[ebp-0x8]
0x000005d2 <+133>: pop ecx
0x000005d3 <+134>: pop ebx
0x000005d4 <+135>: pop ebp
0x000005d5 <+136>: lea esp,[ecx-0x4]
0x000005d8 <+139>: ret
end of assembler dump.

Category IT & Programming
Subcategory Web development
What is the scope of the project? Small change or bug
Is this a project or a position? Project
I currently have Not applicable
Required availability As needed
API Integrations Other (Other APIs)
Roles needed Other
Other roles needed Resolução de um exercício de Programação

Delivery term: Not specified

Skills needed

Other projects posted by C.