Autor
|
Tema: me da un access violation al entrar en la shellcode. (Leído 5,320 veces)
|
black_flowers
Desconectado
Mensajes: 65
|
tengo un codigo asm que funciona perfectamente y que he pasado a shellcode. Pero al intentarlo ejecutar como shellcode medá un access violation. La shellcode no contienenulos y como ya he dicho, ejecutada por si misma funciona perfectamente. alguna idea de porqué puede pasar esto? este es el programa: (y access violation lo he comprobado con olly y es justo al entrar en los opcodes de la shellcode). #include <stdio.h> #include <string.h> //#include <stdafx.h> #include <windows.h>
char code[] = "\x33\xDB\x64\x8B\x5B\x30\x8B\x5B\x0C\x8B\x5B\x1C\x8B\x1B\x8B\x1B\x8B\x5B\x08\x8B\xC3\x50\x8B\x34\x24\x03\x76\x3C\x8B\x56\x78\x03" "\x14\x24\x8B\xCA\x83\xC1\x1F\x41\x8B\x19\x03\x1C\x24\x33\xC0\x8B\x3B\x03\x3C\x24\x81\x3F\x47\x65\x74\x50\x75\x1A\x81\x7F\x04\x72" "\x6F\x63\x41\x75\x11\x81\x7F\x08\x64\x64\x72\x65\x75\x08\x66\x81\x7F\x0C\x73\x73\x74\x0A\x90\x83\xC3\x04\x40\x3B\x42\x18\x75\xCF" "\x8B\x72\x24\x03\x34\x24\x33\xC9\x66\x8B\x0C\x46\x8B\x7A\x1C\x03\x3C\x24\x8B\x04\x8F\x03\x04\x24\x8B\x34\x24\x32\xD2\x83\xEC\x0B" "\xC6\x45\xF8\x57\xC6\x45\xF9\x69\xC6\x45\xFA\x6E\xC6\x45\xFB\x45\xC6\x45\xFC\x78\xC6\x45\xFD\x65\xC6\x45\xFE\x63\x88\x55\xFF\x8D" "\x4D\xF8\x51\x56\x8B\xD8\xFF\xD0\x32\xD2\x83\xEC\x11\xC6\x45\xF7\x63\xC6\x45\xF8\x61\xC6\x45\xF9\x6C\xC6\x45\xFA\x63\xC6\x45\xFB" "\x2E\xC6\x45\xFC\x65\xC6\x45\xFD\x78\xC6\x45\xFE\x65\x88\x55\xFF\x8D\x4D\xF7\x6A\x05\x51\xFF\xD0\x32\xD2\x83\xEC\x20\xC6\x45\xEE" "\x45\xC6\x45\xEF\x78\xC6\x45\xF0\x69\xC6\x45\xF1\x74\xC6\x45\xF2\x50\xC6\x45\xF3\x72\xC6\x45\xF4\x6F\xC6\x45\xF5\x63\xC6\x45\xF6" "\x65\xC6\x45\xF7\x73\xC6\x45\xF8\x73\x88\x55\xF9\x8D\x4D\xEE\x51\x56\xFF\xD3\x33\xC9\x51\xFF\xD0";
typedef void (*pfnc_initDevice)(void);
int main() { pfnc_initDevice pfnc=(pfnc_initDevice)&code[0]; pfnc(); return 0; }
|
|
|
En línea
|
|
|
|
Garfield07
Desconectado
Mensajes: 1.121
¡Este año voy a por todas! JMJ 2011
|
Al ensamblar la shellcode ensambla en modo elf (vamos, compila un ejecutable) y ejecuta, a ver si funciona. Por ejemplo, al ensamblar en Linux ensambla así: $ nasm -f elf -o shellcode.o shellcode.s $ ld -m elf_i386 -o shellcode shellcode.o $
Un saludo! PD: Más datos!
|
|
|
En línea
|
* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente. * No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado. * Si compila esta bien, si arranca es perfecto. ¡Wiki elhacker.net!Un saludo
|
|
|
Ivanchuk
Desconectado
Mensajes: 469
LLVM
|
mmm creo que esta trabajando en windows, digo por el header windows.h . Para mi que el problema es q no tiene permisos de ejecucion en la sección de datos, por eso cuando salta para ejecutar en char code le tira el access violation. Si es eso trata de meter char code en la sección ejecutable, fijate que te dice el compilador si declaras code asi: char code[] __attribute__((section (".text"))) = ...
En linux con gcc funciona pero no se en windows.
|
|
|
En línea
|
|
|
|
black_flowers
Desconectado
Mensajes: 65
|
mmm creo que esta trabajando en windows, digo por el header windows.h . Para mi que el problema es q no tiene permisos de ejecucion en la sección de datos, por eso cuando salta para ejecutar en char code le tira el access violation. Si es eso trata de meter char code en la sección ejecutable, fijate que te dice el compilador si declaras code asi: char code[] __attribute__((section (".text"))) = ...
En linux con gcc funciona pero no se en windows. sí, es en windows y he probado con gcc y funciona en cambio con visual c++ no , , me da un montón de errores de compilación. En cualquier caso el problemaes el que tu dices de los permisos, así que será cuestión de buscar la instrucción equivalente en visual c++. A todo esto la shellcode no haceotra cosa que lanzar la calculadora de windows y debería de funcionar en cualquier sistema. Un saludo.
|
|
|
En línea
|
|
|
|
[Zero]
Wiki
Desconectado
Mensajes: 1.082
CALL DWORD PTR DS:[0]
|
Dale permisos de ejecución con VirtualProtect a ver si así funciona, si funciona luego puedes compilar de forma que te lo meta todo en la sección .text.
Saludos
|
|
|
En línea
|
“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza. Nietzsche
|
|
|
black_flowers
Desconectado
Mensajes: 65
|
este es el equivalente para visual c++: #pragma section("mycode",execute) __declspec(allocate("mycode"))char code[] = "\x33\xDB...sigue la shellcode";
|
|
|
En línea
|
|
|
|
Иōҳ
Desconectado
Mensajes: 563
|
Dale permisos de ejecución con VirtualProtect a ver si así funciona, si funciona luego puedes compilar de forma que te lo meta todo en la sección .text.
Saludos
en la hora del linkeo le tienes que dar permisos a la sección .text /SECTION:.text,REW yo uso radasm y como no se puede usar la "," se usa "|" aqui te lo dejo si te sirve: 5,O,$B\LINK.EXE /SECTION:.text|REW /SUBSYSTEM:WINDOWS /RELEASE /VERSION:4.0 /LIBPATH:"$L" /OUT:"$5",3 Salu2!
|
|
|
En línea
|
|
|
|
Garfield07
Desconectado
Mensajes: 1.121
¡Este año voy a por todas! JMJ 2011
|
Vaya, Iván, no me había dado cuenta ¿Y si probases así? Es más sencillo y creo que funciona para todo char code[] = "\x33\xDB\x64\x8B\x5B\x30\x8B\x5B\x0C\x8B\x5B\x1C\x8B\x1B\x8B\x1B\x8B\x5B\x08\x8B\xC3\x50\x8B\x34\x24\x03\x76\x3C\x8B\x56\x78\x03" "\x14\x24\x8B\xCA\x83\xC1\x1F\x41\x8B\x19\x03\x1C\x24\x33\xC0\x8B\x3B\x03\x3C\x24\x81\x3F\x47\x65\x74\x50\x75\x1A\x81\x7F\x04\x72" "\x6F\x63\x41\x75\x11\x81\x7F\x08\x64\x64\x72\x65\x75\x08\x66\x81\x7F\x0C\x73\x73\x74\x0A\x90\x83\xC3\x04\x40\x3B\x42\x18\x75\xCF" "\x8B\x72\x24\x03\x34\x24\x33\xC9\x66\x8B\x0C\x46\x8B\x7A\x1C\x03\x3C\x24\x8B\x04\x8F\x03\x04\x24\x8B\x34\x24\x32\xD2\x83\xEC\x0B" "\xC6\x45\xF8\x57\xC6\x45\xF9\x69\xC6\x45\xFA\x6E\xC6\x45\xFB\x45\xC6\x45\xFC\x78\xC6\x45\xFD\x65\xC6\x45\xFE\x63\x88\x55\xFF\x8D" "\x4D\xF8\x51\x56\x8B\xD8\xFF\xD0\x32\xD2\x83\xEC\x11\xC6\x45\xF7\x63\xC6\x45\xF8\x61\xC6\x45\xF9\x6C\xC6\x45\xFA\x63\xC6\x45\xFB" "\x2E\xC6\x45\xFC\x65\xC6\x45\xFD\x78\xC6\x45\xFE\x65\x88\x55\xFF\x8D\x4D\xF7\x6A\x05\x51\xFF\xD0\x32\xD2\x83\xEC\x20\xC6\x45\xEE" "\x45\xC6\x45\xEF\x78\xC6\x45\xF0\x69\xC6\x45\xF1\x74\xC6\x45\xF2\x50\xC6\x45\xF3\x72\xC6\x45\xF4\x6F\xC6\x45\xF5\x63\xC6\x45\xF6" "\x65\xC6\x45\xF7\x73\xC6\x45\xF8\x73\x88\x55\xF9\x8D\x4D\xEE\x51\x56\xFF\xD3\x33\xC9\x51\xFF\xD0"; int main(int argc, char **argv) { (*(void(*)()) code)(); return 0; }
Otro problema podría ser que la shellcode esté mal pasada a hexadecimal Un saludo! Sagrini
|
|
|
En línea
|
* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente. * No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado. * Si compila esta bien, si arranca es perfecto. ¡Wiki elhacker.net!Un saludo
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Empire Earth II: ACCESS VIOLATION?
Juegos y Consolas
|
Golden
|
1
|
5,451
|
29 Mayo 2005, 12:19 pm
por ¤ Nerviozzo ¤
|
|
|
Sharing Violation
Scripting
|
Fabiang
|
2
|
3,429
|
16 Julio 2010, 20:32 pm
por Fabiang
|
|
|
Delphi Access violation when reading [00000000]
Bugs y Exploits
|
oPen syLar
|
0
|
2,480
|
6 Noviembre 2011, 22:59 pm
por oPen syLar
|
|
|
Excepcion no controlada en 0xcdcdcdcd en xxxxxxx.exe:0xC0000005:Access violation
Programación C/C++
|
ftejada
|
6
|
4,195
|
20 Abril 2014, 14:47 pm
por ftejada
|
|
|
Help !! Access violation
Ingeniería Inversa
|
K0rK
|
1
|
2,537
|
6 Junio 2020, 03:51 am
por MCKSys Argentina
|
|