elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
12 Octubre 2008, 04:33  



  Mostrar Mensajes
Páginas: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 158
61  Programación / Java / Re: [Source] Pong by E0N en: 06 Septiembre 2008, 11:51
Bueno, como veo que hay problemas para saber donde colocar la carpeta "images" he actualizado el proyecto añadiendo a la clase Archivos una nueva función que comprueba que todas las imágenes estén en su sitio, y de no ser así muestra un mensaje de error indicando donde hay que colocarlas:


Salu2
62  Programación / Java / Re: [Source] Pong by E0N en: 06 Septiembre 2008, 01:58
Tienes NetBeans? puedes abrirlo fácilmente desde el, si no desde cualquier otro ide añadiendo las clases de la carpeta scr a tu proyecto. También puedes generar el jar desde consola con las herramientas propias de java.

Salu2

PD - Poner la carpeta images en la ruta del jar
63  Programación / Java / Re: Ejercicios Open Source en: 06 Septiembre 2008, 01:55
- Ejercicio:  Pong
- Coder:     E0N
- Lenguaje: Java
- Imagen:


- Más detalles y descarga:

http://foro.elhacker.net/java/source_pong_by_e0n-t226832.0.html
64  Programación / Java / [Source] Pong by E0N en: 06 Septiembre 2008, 01:52
Hola

Pues aquí traigo otro ejemplo de arcade simple, esta vez ya lo e hecho un poco más completo, con su pantalla para seleccionar juego jugador contra jugador o para juagr contra el Pc, para elegir una opción u otra basta con pulsar 1 o 2 (con el teclado numérico a mi por lo menos no me funciona, así que usad los números de encima de las teclas)


Una vez elijáis el modo de juego llegaréis a esta pantalla donde ya podréis disfrutar de este simple, aunque entretenido juego xDDD


El player 1 siempre maneja su paleta con las flechas de dirección arriba y abajo y el player 2 (en caso de elegir jugar con un amigo) lo hará con las teclas "Q" y "A".

Por supuesto el código fuente viene incluido en el zip para que podáis ver como funciona y modificarlo a vuestro gusto.

Bugs conocidos:
- Si la pelota pasa rozando la paleta hará un movimiento un poco extraño y puede llegar a atascarse en el modo player vs computer.
- Por lo menos en mi pc cuando ejecuto el programa desde el NetBeans funciona bien y fluidamente, si ejecuto el jar va a trompicones, si alguien fuese tan amable de testearlo a ver ;)


Pues eso es todo, espero que podáis aprender algo del código y si tenéis alguna duda, sugerencia, insulto o amenaza pues prceded sin miedo en el post jajaja

Salu2 E0N
65  Programación / Java / Re: [Source] Space Invaders en: 06 Septiembre 2008, 01:44
Jaja joer, que de descargas ^^ que chulo, ahora mismo voy a publicar el pong a ver si también le interesa a la gente xD
66  Programación / Programación General / Re: ESTUPENDAS REGLAS DEL FORO PERO MAL EXPLICADAS ME TEMO en: 05 Septiembre 2008, 22:29
Disculpen que mi pregunta no tenga nada que ver, pero ese codigo en ASM se puede pasar a C++ ¿?

Evidentemente
Tendras por ahi un codigo más simple o por lo menos en C.. Es que intente pasarlo y nada :P


Que haga eso no, en C es un coñazo, pero vamos, es hacer hoohking a distancia, intenta entender el código mejor que traducirlo :P
67  Programación / Programación General / Re: ESTUPENDAS REGLAS DEL FORO PERO MAL EXPLICADAS ME TEMO en: 05 Septiembre 2008, 14:44
Disculpen que mi pregunta no tenga nada que ver, pero ese codigo en ASM se puede pasar a C++ ¿?

Evidentemente



En el principio del api es donde tienes que poner el salto a tu función y luego hacerte un buffer que ejecute los bytes que te has cargado del api y salte al api a partir de tu salto
68  Programación / Programación General / Re: ESTUPENDAS REGLAS DEL FORO PERO MAL EXPLICADAS ME TEMO en: 05 Septiembre 2008, 01:29
Ok, veamos en lo que te puedo ayudar y a ver si e entendido bien que es lo que quieres hacer.

Quieres un programa que cuando encuentre X título en una ventana inyecte una dll en su proceso que hooke el api DrawText, es así?

Bien, para eso vas a necesitar dos cosas, la primera un código en delphi para poder inyectar tu dll (que irá en tu proyecto y se ejecutará cuando encuentre dicho título), este es un código que encontré googleando:

Código
program Project1; 
 
uses
 Windows;
 
var
 PID, BytesWritten, Process, Thread, ThreadId: dword;
 Paramaters: pointer;
 DLL: pchar;
 
function xCreateRemoteThread(hProcess: dword; lpThreadAttributes: Pointer; dwStackSize: dword; lpStartAddress: Pointer; lpParameter: Pointer; dwCreationFlags: dword; lpThreadId: dword): dword; stdcall; external 'RT.dll';
 
function xVirtualAllocEx(hProcess: dword; lpAddress: Pointer; dwSize: dword; flAllocationType: dword; flProtect: dword): Pointer; stdcall; external 'RT.dll';
 
function xVirtualFreeEx(hProcess: dword; lpAddress: Pointer; dwSize: dword; dwFreeType: dword): boolean; stdcall; external 'RT.dll';
 
begin
 DLL := 'c:\Inject\Library.dll'; //full path!
 PID := 1784; //process id!
 Process := OpenProcess(PROCESS_ALL_ACCESS, False, PID);
 Paramaters := xVirtualAllocEx(Process, nil, 4096, MEM_COMMIT, PAGE_READWRITE);
 WriteProcessMemory(Process, Paramaters, Pointer(DLL), 4096, BytesWritten);
 Thread := xCreateRemoteThread(Process, nil, 0, GetProcAddress(GetModuleHandle('KERNEL32.DLL'), 'LoadLibraryA'), Paramaters, 0, ThreadId);
 WaitForSingleObject(Thread, INFINITE);
 xVirtualFreeEx(Process, Paramaters, 0, MEM_RELEASE);
 CloseHandle(Thread);
 CloseHandle(Process);
end.

Metes lo que en ese código es el programa principal en una función y listo, no me preguntes por que designan el api CreateRemoteThread como xCreateRemoteThread (no se si para intentar dejarlo indetectable) por que yo de delphi ni idea, pme sacas de pascal y me pierdo xDD

Bien, ahora ya tienes la función para inyectar tu dll, pero claro, te falta una dll para poder hacer el gancho, que de eso en delphi si que no e encontrado ningún ejemplo, pero es muy simple, te dejo un tuto que escribí (el del rootkit, en C):
http://foro.elhacker.net/analisis_y_diseno_de_malware/querias_tutos_de_programacion_de_malware_pues_toma-t196251.0.html

Intenta adaptarlo a Delphi, la idea es simple, lo primero que tienes que hacer es ver cuantos bytes tienes que cojer del api a hookear (viene bien explicad) sustituir estos por un jump (0xE9) que salte a tu función hookeadora, si te lias calculando la distancia del salto puedes poner al inicio del api a hookear:

push DireccionRealDeTuFuncionHookeadora
ret

Y arreglado, pero ten en cuenta que eso no son 6 bytes a la hora de sobrescribir el api :P Finalmente en tu función hookeadora cambias lo que quieres y llamas a un buffer que te tienes que crear con los bytes del api a hookear que te hayas cargado y un salto a la dirección del api a partir de los bytes que te has cargado.
Puede parecer confuso, pero viene mejor explicado en el tuto xDDDD



Los códigos en ASM que tengo hechos son un poco más abanzados de los que buscas, el único que te podría ser útil es este, que hookea una función sin usar ninguna dll, en el ejemplo que hice es una especie de rootkit que oculta los archivos que empiezan por ~, aquí te lo dejo, aunque creo que muy útil no te va a ser:

Código
include 'H:\archivos de programa\fasm\include\win32ax.inc'
 
.data
HookApi      db 'FindNextFileW' , 0  ; Nombre del api a hookear
HookDll      db 'Kernel32.dll' , 0  ; Nombre de la dll que contiene el api a hookear
DirApi     dd ?     ; Dirección del api a hookear
 
process       dd ?     ; El handle del proceso donde inyectaremos
pid      dd 2160     ; El pid    del proceso donde inyectaremos
x      dd 7     ; El número de bytes que tiene al principio el api a hookear (suelen ser 5 ó 7)
 
BufferCall    dd ?     ; Puntero al buffer para llamar al api (en nuestro propio proceso)
inyBufferCall dd ?     ; Puntero al buffer para llamar al api una vez INYECTADO
 
tamFun      dd ?     ; Tamaño de la función que suplantará al api
inyFun      dd ?     ; Puntero a la función que reemplazará al api una vez INYECTADA
 
BufferApi     dd ?     ; Buffer de 5 bytes que pondremos en el inicio del api FindNextFileW para que salte
    ; a nuestra función
 
struct Datos
      sBufferCall dd ?     ; Puntero a inyBufferCall para poder llamar al api original
ends
dat Datos ?
 
SizeofDatos   dd 4      ; El tamaño de la estructura, hay que ir contando los bytes
dirStruct     dd ?      ; La dirección donde esta escribe la estructura una vez INYECTADA
 
Prote      dd ?      ; Necesario para VirtualProtect
 
.code
start:
; Obtenemos el handle del proceso donde inyectaremos
mov eax, PROCESS_VM_OPERATION
or  eax, PROCESS_VM_WRITE
invoke OpenProcess, eax, FALSE, [pid]
mov [process], eax
 
; Obtenemos la dirección del api a Hookear
invoke GetModuleHandle, HookDll
invoke GetProcAddress, eax, HookApi
mov [DirApi], eax
 
; Creamos un buffer con los x primeros bytes del api a  hookear
; y un salto al api + x para poder llamar con normalidad al api
; Estructura del buffer:
;       x bytes             |    1 byte   |   4 byte   |   1 byte
; x primeros bytes del api  | push [0x68] | DirApi + x | ret [0xC3]
mov eax, dword [x]
add eax, 6
invoke LocalAlloc, LPTR, eax ; eax = x + 6
mov [BufferCall], eax
 
invoke RtlMoveMemory, [BufferCall], [DirApi], [x] ; Copiamos los x primeros bytes del api
mov eax, [BufferCall]
add eax, [x]
mov byte [eax], 0x68
inc eax
mov ebx, [DirApi]
add ebx, [x]
mov dword [eax], ebx
add eax, 4
mov byte [eax], 0xC3
 
; Inyectamos el buffer que acabamos de crear y guardamos
; su dirección en inyBufferCall
mov eax, MEM_RESERVE ; eax = MEM_RESERVE | MEM_COMMIT
or  eax, MEM_COMMIT
mov ecx, [x]     ; ecx = x + 6
add ecx, 6
invoke VirtualAllocEx, [process], 0, ecx, eax, PAGE_READWRITE
mov [inyBufferCall], eax
 
mov ebx, [x]     ; ebx = x + 6
add ebx, 6
invoke WriteProcessMemory, [process], [inyBufferCall], [BufferCall], ebx, NULL
 
; Inicializamos la estructura con todos los datos necesarios para poder interceptar el api
mov eax, [inyBufferCall]      ; Metemos el puntero al buffer para llamar
mov [dat.sBufferCall], eax    ; con normalidad al api
 
; [...]
 
 
; Reservemos espacio para la estructura en el proceso a inyectar y la escribimos
mov eax, MEM_RESERVE
or  eax, MEM_COMMIT
invoke VirtualAllocEx, [process], 0, [SizeofDatos], eax, PAGE_READWRITE
mov [dirStruct], eax
invoke WriteProcessMemory, [process], [dirStruct], dat, [SizeofDatos], NULL
 
; Cambiamos el 0x0000 de la función a inyectar por un puntero a la estructura
; antes de inyectarla.
mov ebx, CAMBIO      ; ebx = El 0x0000 que hay que cambiar (4 bytes)
sub ebx, 4
invoke VirtualProtect, ebx, 6, PAGE_EXECUTE_READWRITE, Prote
invoke RtlMoveMemory, ebx, dirStruct, 4
 
; Calculamos el tamaño de la función a inyectar
mov eax, FIN_MyFindNextFileW
sub eax, MyFindNextFileW
mov [tamFun], eax
 
; Reservamos espacio para la función en el proceso a inyectar y la escribimos.
mov eax, MEM_RESERVE ; eax = MEM_RESERVE | MEM_COMMIT
or  eax, MEM_COMMIT
invoke VirtualAllocEx, [process], 0, [tamFun], eax, PAGE_EXECUTE_READWRITE
mov [inyFun], eax
invoke WriteProcessMemory, [process], [inyFun], MyFindNextFileW, [tamFun], NULL
 
; Creamos un buffer de 5 bytes que pondremos en el principio de la llamada a
; FindNextFileW en el proceso remoto para que salte a nuestra función.
; Estructura del buffer:
;  1 bytes    |     4 bytes
; jmp [0xE9]  | Tamaño del salto
invoke LocalAlloc, LPTR, 5
mov [BufferApi], eax
mov byte [eax], 0xE9
inc eax
mov ebx, [inyFun]
sub ebx, [DirApi]
sub ebx, 5 ; 5 = -1 por el 0xE9 y -4 por la dirección
mov dword [eax], ebx
 
; Modificamos el inicio del api FindNextFileW del proceso "víctima" para que
; salte a nuestra función que la suplantará.
mov eax, MEM_RESERVE ; eax = MEM_RESERVE | MEM_COMMIT
or  eax, MEM_COMMIT
invoke VirtualAllocEx, [process], [DirApi], 5, eax, PAGE_EXECUTE_READWRITE
invoke WriteProcessMemory, [process], [DirApi], [BufferApi], 5, NULL
 
; Salimos
invoke ExitProcess, 0
 
 
; La función que suplantará al api
proc MyFindNextFileW hFindFile, lpFindFileData
 
    OK:
mov ebx, 0x0000 ; Este 0x0000  es  remplazado anteriormente  por  el
CAMBIO: ; programa por un puntero a la estructura inyectada.
 
push [lpFindFileData]
push [hFindFile]
call dword [ebx]
mov ebx, eax
 
cmp ebx, 0       ; Si hemos terminado de listar todos los
je RETORNAR_FIN        ; archivos devolvemos 0
 
    mov eax, [lpFindFileData] ; Nos situamos en
    add eax, 44       ; cFileName
    cmp byte [eax], '~'       ; y ocultamos los que
    je  OK       ; empiecen por '~'
 
    mov eax, 1       ; Si aun quedan archivos por listar
    ret       ; devolvemos 1
 
    RETORNAR_FIN:
    mov eax, 0
    ret
endp
FIN_MyFindNextFileW:
 
.end start


Salu2 y en el manual que te e puesto puedes encontrar un ejemplo de dll de como hookear un api, solo es cambiar los valores necesarios y puedes hacer la dll en C, que no pasa nada ;)
69  Programación / Programación General / Re: ESTUPENDAS REGLAS DEL FORO PERO MAL EXPLICADAS ME TEMO en: 03 Septiembre 2008, 18:13
Sabes otro lenguaje que no sea delphi?? Si eso avisa y te pongo unos ejemplos, tengo el C y ASM, pasarlos a Delphi es facilisimo, son apis puras y duras.


70  Programación / Java / Re: me conviene estudiar AWT? en: 03 Septiembre 2008, 14:17
Sabiendo awt el swing es poner una J, aprender a menejar nuevos componentes y poco más, unos buenos manuales:

http://ji.ehu.es/LMAlonso/SW/java/Bib/tutorjava/html/ui/index.html
http://www.programacion.com/java/tutorial/swing

Salu3
71  Programación / Java / Re: [Source] Space Invaders en: 03 Septiembre 2008, 14:12
Ponos unos pantallazos skapunky, que me pica la curiosidad :P

Citar
Uff, pero si la mayoria de juegos son creados en c++ con SDL, OpenGL o (no me acuerdo la otra)...

Java es más rápido a la hora de programar, cómodo y bastante más sencillo, por no hablar de la facilidad para hacer funcionar tu juego en un movil, linux, windows, mac, una pda, etc, etc

Que java rinde menos? pues si, pero merece la pena por las ventajas que aporta, o eso creo yo, cada uno que programe en lo que quiera :P
72  Programación / Java / Re: [Source] Space Invaders en: 03 Septiembre 2008, 01:06
Citar
Oooh no  :o :o el alumno ha superado al maestro jojojo!!!!  >:D >:D

Bueno, bueno, quien te ha asignado ese título??  :¬¬ jajajaja Este una choradilla (y bastante incompleto, pero por algo se empieza :P), verás cuando saque mi próximo juego, va a crear más expectativa incluso que el mítico tetris ese que tienes en mente jajajaja

Estoy programando ni más ni menos que un....... Pong!!! jaja si, si, me refiero al juego más cutre y aburrido de la historia de los arcades xD Pero esta vez ya lo voy a hacer completo con su pantallita de selección de un player o dos y puede que hasta un sonidito para los rebotes de la bola jajajja

Citar
PD: Yo tambien lo publicare en mi foro sin tu consentimiento por supuesto!!! xd

Así me gusta xD pero ya sabes que te dejo :P

Citar
Pues yo aprovechando los recursos gráficos de esa pagina y metiendo de los míos lo voy a hacer en visual basic. Y si me queda wapo lo haré en delhpi que seguro que lo hago muchísimo mejor.

PD: Al final no he usado los recursos de esa pagina. He pillado haciendo una chapuza las naves de las guerras de las galaxias.

Lucasarts tiembla !

Jajajaja entre tu y yo les vemos a arruinar :P Yo no me e atrevido a pintar nada, por que tengo un arte que tela  :rolleyes: :rolleyes:  :-\

VB no te lo recomiendo yo hice algunas pruebas en su día con dxlib (creo recordar que se llamaba) y al intentar hacer algo que mueva unos cuantos sprites (véase el típico mapa compuesto de cuadraditos) se peta que da gusto, en delphi ni idea, de lo que he probado Java sin lugar a dudas lo mejor (tanto para juegos 2D como de lenguaje, para que mentir xD) y C# + XNA también está bastante bien, pero no es multiplatarforma y es más complejo que java.

Citar
por cierto, si te sirve (es que yo estoy un poco clavado con la interfaz gráfica de java)

Código:
try{
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (Exception e){
        }


esto hace que se vea nativa, independientemente de la plataforma, lo digo por los popups

Gracias, no lo conocía, pero de todas formas me sigue gustando más el estilo del swing, combina muy bien con el theme del emerald que tengo puesto jajajajaja que pijales que soy :P


Muchas gracias a todos por los comentarios ;)
Salu2
73  Programación / Java / Re: [Source] Space Invaders en: 02 Septiembre 2008, 18:11
Gracias por el aporte... ¿le puedo patrocinar en el blog?

Hombre, por supuesto ;) Anda que no habré aprendido cosas de tu blog, espero que le sea de ayuda a alguien.

Salu2 y gracias por los comentarios
74  Programación / Java / Re: Ejercicios Open Source en: 02 Septiembre 2008, 13:07
- Ejercicio:  Clon Space Invaders
- Coder:     E0N
- Lenguaje: Java
- Imagen:


- Descripción:
Es un pequeño ejemplo de juego arcade que consiste en eliminar a los marcianitos que hay en la pantalla sin que nos den.

- Créditos por la idea y los sprites:
http://www.planetalia.com/cursos/

- Más datos y descarga:
http://foro.elhacker.net/java/source_space_invaders-t226361.0.html

http://rapidshare.com/files/142122278/Marcianitos.zip.html

http://www.megaupload.com/es/?d=C0GYWOZL
75  Programación / Java / [Source] Space Invaders en: 02 Septiembre 2008, 13:00
Hola

Acabo de terminar un arcade que imita en cierta parte a el mítico juego Space Invaders:


La idea de hacer este juego, así como los sprites están sacados de esta web:
http://www.planetalia.com/cursos/

Eso si, el código no se parece en nada, así que tenéis dos ejemplos de lo mismo :P Aun le faltan muchas cosas por añadir, como niveles, unas animaciones más depuradas, un fondo, vidas, etc, etc.. Por ahora solo se puede jugar a un nivel que se acaba cuando matéis a los marcianitos o ellos a vosotros. Los marcianos chocan entre ellos, se mueven aleatoriamente y poco más jajaja Así que si queréis mejorarlo pues ya sabéis ;)

Espero que a alguien le sea útil
Salu2 E0N
Páginas: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 158






Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC
Free counter and web stats