| |
|
271
|
Seguridad Informática / Análisis y Diseño de Malware / Re: Como usar la pila.
|
en: 19 Octubre 2014, 12:14 pm
|
|
Gracias, abajo del todo la tienes en la de Intel, ya que algunos usuarios de este y otros foros no les gusta la de AT&T.
Sobre el lenjuage que mata el alma y la envenena, supongo que te referiras VB6, es cuestion de lo que tengas que hacer, esta claro de que si programas en este no tienes que saber mucho el funcionamiento de las cosas, ASM es lo contrario te obliga a saberlo, de lo contrario no haces nada.
Te digo esto porque desde que estoy con ASM, casi desde siempre, solo programo algoritmos de encryptacion y de ofuscacion para Malware, simplemente por aprendizaje, pero te lleva por esos caminos la mayoria de veces...
Y si yo uso AT&T, por que ensamblo con GAS.
Bueno nada mas que decir, creo que tendrias que poner un resuelto al hilo, ya que con esta charla se esta desviando.
Un saludo.
|
|
|
|
|
272
|
Seguridad Informática / Análisis y Diseño de Malware / Re: Como usar la pila.
|
en: 19 Octubre 2014, 11:40 am
|
De nada hombre, sabia que ese link te ayudaria mejor que mis propias palabras. Y sobre la API desde mi punto de vista sin comentarios... No estoy acostumbrado a esa clase de programacion. Y como dijiste control ninguno. Yo estoy acostumbrado a ASM como este: http://foro.elhacker.net/criptografia/aes_128_bits_encrypt_asm_bit_slice-t414536.0.html Es uno de mis codes. Un saludo.
|
|
|
|
|
274
|
Seguridad Informática / Análisis y Diseño de Malware / Re: Como usar la pila.
|
en: 19 Octubre 2014, 10:03 am
|
Ya veo que se trata de Win y la sintaxis de Intel, yo soy todo lo contrario Unix y AT&T sintaxis. push ebp mov ebp, esp sub esp, 96
Si lo extrae al final, como dijiste esa es la funcion de leave, restaurar esp y ebp. Bien se decremeta el stack en 4 se guarda el valor de ebp, luego se el offset de esp a ebp y se substrae esp en 96 bytes. Si te das cuenta se deja ebp (arriba "base"), y esp apuntando abajo donde sigue este. Bien sobre lo de reservar 96 bytes, yo tampoco le veo, en la funcion start solamente se usan 72 bytes lo de las estructuras WNDCLASSEX y MSG nada mas, ya que en su ejecucion no llama a MyWndProc y al finalizar restaura el stack. push DWORD PTR [ebp+20] push DWORD PTR [ebp+16] push DWORD PTR [ebp+12] push DWORD PTR [ebp+8] ;Aqui no entiendo porque hWnd apunta deste 8, que hay de primero entonces ;No deberia apuntar desde el byte 0 ;Ha y no entiendo porque aqui es ebp+direccion y arriba es ebp-direccion call DefWindowProc
Mejor que leas esto: http://www.unixwiz.net/techtips/win32-callconv-asm.html Mirate los diagramas. Pero una cosa cuando se llama a MyWndProc? No sera una funcion aparte? Un saludo.
|
|
|
|
|
275
|
Seguridad Informática / Análisis y Diseño de Malware / Re: Como usar la pila.
|
en: 19 Octubre 2014, 03:13 am
|
Y también sobre el direccionamiento indirecto, se como se direcciona pero siempre que trato de hacerlo el programa crashea. Necesito un ejemplo práctico porque siempre ponen: mov eax,byte ptr [ebp+ebx*2+4] ;ejemplo si entiendo lo de byte ptr
pero si luego trato de acceder a esa posición de memoria no puedo, y yo creí que a partir del 386 se podían direccionar 4gb de memoria.
Vale, estas calculando una direccion compleja, podrias decir los valores de ebp, ebx, simplemente es para saber donde esta apuntando el offset que generas. Que tengas 4GB de memoria, no significa que puedas acceder por completo a esta, algunas direcciones estan protegidas contra escritura y lectura, depende del modo en el que estes CPL, Ring 0-3 no se si te sonara esto, pues depende de los privilegios que tengas no podras acceder a determinado offset. Si quieres tener el control de todo, por asi decirlo tendrias que estas en Ring 0, pero como estas empezando con esto, olvidate de momento. Tambien ayudaria mucho que dijeras que clase de error que esta dando. Y sobre la pila me gustaría ver como se obtienen las variables, como se reserva espacio y como se manejan estructuras(sin identificador) osea no: lea eax,structura push eax
sino acceder a posiciones de memoria en donde se encuentre cada elemento. ASM en un lenjuage de programacion "libre", me refiero a que puedes hacer muchas cosas de diferentes maneras, no hay una forma establecida. Algunas de las iintrucciones que van ligadas con el stack son estas: enter, leave, push, pop... Pero tambien puedes usar add o sub para reservar o privar la pila, y puedes hacerlo de mil formas mas por asi decirlo. Sobre las variables te invito que busques informacion, eso ya esta mas que hablado, pero yo usaria fastcall, lo de cargar los parametros en el stack esta algo pasado, pero ojo fastcall tiene un numero limitado de parametros si quieres pasar mas tendras que usar la pila. Y sobre las estructuras, supongo que quieres saber como se crea una a mano durante la ejecucion del code no? Si quieres dime alguna estructura y te dejo el ejemplo. Y sobre acceder a sus elemento todo depende de que posicion este. Un saludo.
|
|
|
|
|
276
|
Programación / Programación C/C++ / Re: [Ayuda] Programando socke cliente y servidor en C
|
en: 16 Octubre 2014, 07:43 am
|
ivancea96 lo que me estás diciendo del char ya lo se, yo lo que quiero saber es cual es la IP que el sistema operativo le asigna al server ¿Como puedo obtener esa IP del server? Y por qué el cliente almacena la IP del server en un array de 16 elemento? específicamente por qué el array es de 16 elementos? es todo.
Buscando un poco en los manuales de Linux encontraras las funciones que necesitas, no sera por falta de documentacion, algunas de las que te digo son estas, igualmente no se que necesitas al 100%. getsockname, getaddrinfo, gethostbyaddr etc... Estan todas muy bien documentadas, lee los manuales que estan perfectamente comentados y sabras cual es la que te conviene. Sobre el tema del vector, cuando llamas a scanf y pasa las direccion esta esta en formato ASCII, igualemnte no ves que se solicita una cadena en scanf. El simple motivo de porque tiene 16 bytes el vector ip es este. Si sabiendo que una direccion IPv4 puede estar en el rango 255.255.255.255 y que los numeros o simbolos que introduces para crear esa direccion son un byte se queda en 15 bytes el sobrante sera por la basura que deja scanf, o el byte nulo. Pero tu necesitas un entero de 4 bytes en el rango 0 - 255, no 15 bytes en formato ASCII, lo que hace inet_addr es pasar la direccion en formato string a un int de 4 byes. Seria esto 127.0.0.1 (string) == 0x100007f, ese numero en HEX estaria bien, se entiende? Si quieres ser mas PRO, utiliza argv (linea de comando) y dejate de funciones como esa, para tomar valores por parte del usuario, argv el ultimo byte seria un 0, supongo que sabras que siginifica el 0 cuando estas trabajando con cadenas. Y otra cosa, en el code CLIENTE solicitas el puerto, pero estas usando una previeamente establecido. Un saludo.
|
|
|
|
|
277
|
Programación / ASM / Re: Puertos de instruccion IN
|
en: 15 Octubre 2014, 22:47 pm
|
Aqui tienes una lista, del 94 desactualizada pero esta bastante bien. Pero como dice la lista, no esta completa, cada Hardware puede tener su puerto especifico, si quieres saber los datos exactos lee su data sheet apropiado. Un saludo.
|
|
|
|
|
278
|
Comunicaciones / Redes / Re: Acceso remoto segundo router
|
en: 14 Octubre 2014, 22:18 pm
|
Pero al final cuales son los puertos? Me remito al primer mensaje. Vale quieres dirigir las conexiones que vengan desde la WAN con el puerto 50100, a 192.168.1.2 al pueto 80, no? External Start Port:50100 External End Port:50100 Internal Start Port:80 Internal End Port:80 Server Ip Address:192.168.1.2 Y bueno sobre el cortafuegos, puede que este hay el problema. Ip Filtering>Incoming:
Filter Name:Web2 IP Version: Solo me aparece IPv4 Protocol:Tcp/Udp Source IP address[/prefix length]: <----- la direccion de origen, como hiciste un NAT, ya sabes. Source Port (port or port:port): < ----- lo mismo
Destination IP address[/prefix length]: <------ a donde van las peticiones de la direccion de origen, ya sabes Destination Port (port or port:port): 8787 <---- esto tienes que cambiar Un saludo. P.D: Si quieres saber si es problema del filtrado IP, desactivalo un momento y lo sabras.
|
|
|
|
|
279
|
Programación / ASM / Re: Manejar listas doblemente enlazadas en C desde ASM
|
en: 13 Octubre 2014, 23:26 pm
|
Si no muestras algo de code, se hace dificil ayudarte. Puedo dejarte un ejemplo con la estructura, pero no de todas las funciones. struct nodo { int dato; struct nodo *siguiente; struct nodo *anterior; };
subl $12, %esp movl %eax, (%esp) ; en eax esta el int dato leal -12(%esp), %ebx ; en ebx esta el puntero al siguiente int dato leal 12 (%esp), %ecx ; en ecx esta el puntero al anterior int dato movl %ebx, 4(%esp) movl %ecx, 8(%esp)
No se si me explico se puede haber mas complejo y optimizado aun, pero no puedo hacer mas ya que no tienes nada escrito. Igualmente te dejo este link, que tienes un code y todo. Si tienes algun problema dilo. Punto 7.3. Listas http://www.abreojosensamblador.net/Productos/AOE/html/Pags/Cap07.html Un saudo.
|
|
|
|
|
280
|
Seguridad Informática / Análisis y Diseño de Malware / Re: Ayuda con Motor Metamorfico
|
en: 7 Octubre 2014, 17:27 pm
|
|
La duda que tienes es avanzada no creas conseguir mucha ayuda en estos temas, me pasa ami tambien.
No creo que encuentres un motor metamorfico en ese link, si es asi pido disculpas, no me lei los 288 que hay.
Lo que podrias hacer es estudiar algun motor polimorfico de los que te paso @MCKSys Argentina, y de hay sacar ideas para los tuyos y si es posible para algun dia hacer un motor metamorfico, sabras cual es la diferencia entre un motor poli y meta?
Pues sobre como crear las instrucciones equivalentes, tendrias que crear una rutina que interpretara el opcode y lo cambiara por otros registros y opcode no hay otra forma segun lo que se yo, lee los tomos de las intrucciones y mira cual podria ser los equivalente.
Tienes XCHG y opcode como ese, no se que mas decirte creo que con el metodo que estas usando para el disassembler podrias hacer algo con esto, pero eso ya es cosa tuya.
Creo recordar a ver leido por algun sitio dedicado al malware, que se encontro malware con un motor metamorfico de unas 15.000 instrucciones ASM, era mas pesado y avanzado el metamorfismo que el propio virus en si, solamente digo eso.
Un saludo.
|
|
|
|
|
|
| |
|