Hola a todos. No se si esta es la sección correcta.
Tengo el siguiente problema: estoy intentando analizar un shellcode que dispara un /bin/sh, el cual
encodee con el algoritmo Shikata Ga Nai de Metasploit.
Luego lo incorporo en un programa en C y lo analizo con GDB.
1ro lo encodee con 1 interacción y pude debuguearlo sin problemas.
Cuando lo encodee con 2 iteracciones, ahí me surge que cuando va a hacer un XOR lo hace en un
área de memoria diferente a la que estoy ejecutando y me dispara el siguiente mensaje:
"Program received signal SIGSEGV, Segmentation fault."
los datos son los siguientes:
Dump of assembler code for function code:
0x56557020 <+0>: fldlg2
0x56557022 <+2>: fnstenv [esp-0xc]
0x56557026 <+6>: pop edx
0x56557027 <+7>: mov ebx,0x8f433112
0x5655702c <+12>: sub ecx,ecx
0x5655702e <+14>: mov cl,0xe
=> 0x56557030 <+16>: xor DWORD PTR [edx+0x17],ebx
0x56557033 <+19>: add edx,0x4
0x56557036 <+22>: add ecx,DWORD PTR [eax+0x22]
0x56557039 <+25>: mov eax,ds:0xfc8bb57a
0x5655703e <+30>: icebp
0x5655703f <+31>: popa
0x56557040 <+32>: loopne 0x56557089
0x56557042 <+34>: cmp eax,0xe48312c7
0x56557047 <+39>: es jmp 0x11a0:0x2ecb1f42
0x5655704f <+47>: mov DWORD PTR [edx-0x7022ec56],edi
0x56557055 <+53>: inc ebx
0x56557056 <+54>: cdq
0x56557057 <+55>: (bad)
0x5655705a <+58>: fadd QWORD PTR [edx+0x5d]
0x5655705d <+61>: add al,0x15
0x5655705f <+63>: inc esp
0x56557060 <+64>: push esp
0x56557061 <+65>: lods eax,DWORD PTR ds:[esi]
0x56557062 <+66>: mov edi,0xc5b7cceb
0x56557067 <+71>: mov fs,WORD PTR [esi]
0x56557069 <+73>: aad 0x24
0x5655706b <+75>: popa
0x5655706c <+76>: pop ebp
0x5655706d <+77>: xor ecx,DWORD PTR [eax]
0x5655706f <+79>: add BYTE PTR [eax],al
End of assembler dump.
0x56557030 in code ()
(gdb) print /x $edx
$1 = 0x56555452
¿cómo puedo sortear este problema?
Gracias.-