Vota por nosotros en el ranking web que participamos
Bienvenido(a),
Visitante
. Favor de
ingresar
o
registrarse
.
¿Perdiste tu
email de activación?
- Octubre 11, 2008, 10:55:07
Visita:
Articulos
-
Juegos Gratis
-
Da Foros
Comunidad Underground Hispana
|
Programacion
|
Programación
|
Carbide C/C#/C++
| Tema:
algo parecido a boulevar of broken dreams xD
0 Usuarios y 1 Visitante están viendo este tema.
« anterior
próximo »
Páginas:
[
1
]
Autor
Tema: algo parecido a boulevar of broken dreams xD (Leído 276 veces)
Ni0
Gran Colaborador
Desconectado
Mensajes: 1362
Ni0-inside the source code
algo parecido a boulevar of broken dreams xD
«
en:
Diciembre 26, 2007, 06:16:24 »
Hola, despues de ver el code posteado en el post mensionado en el titulo, dije.. porque no hacer algo asi yo? asique para empezar, queria programar algo que ponga un caracter en pantalla (al final no me sale, por eso el post, porque me da error), asique primero hice esto: (aclaro, se compila con el dev-cpp, lo digo por el asm)
Código:
#include <stdio.h>
main()
{
asm("push $0x4E");
asm("call _putchar");
getchar();
}
y me muestra un lindo caracter N, asique empeze a investigar e hice esto:
Código:
#include <stdio.h>
main()
{
long *asd;
asd = (long *)putchar;
printf("%d", *asd);
getchar();
}
con ese me da un numero que es el 1359488511 (decimal obio xD), entonces dije, porque no buscar la direccion de putchar ayudado con ese numero?? y compile esto:
Código:
#include <stdio.h>
main()
{
long *asd;
for(asd = (long *)main; asd < (long *)10000000; asd++)
if(*asd == 1359488511)
break;
printf("%d %d", asd, putchar);
getchar();
}
y me imprime 2 numeros iguales, pienso que es la direccion de putchar, entonces hago esto:
Código:
#include <stdio.h>
long *asd;
main()
{
for(asd = (long *)main; asd < (long *)10000000; asd++)
if(*asd == 1359488511)
break;
asm("push $0x4E");
asm("call _asd");
getchar();
}
y cuando llega al call me da error (el windows me dice que hubo un error y que el programa debe cerrarse), comprobe que al llegar al call ocurre el error con el debugger.
el primer codigo funciona, con el anteultimo comprobe que el valor de putchar sea igual al de asd, pero... en el ultimo code no funciona, si asd tiene el mismo valor que putchar, entonces es lo mismo hacer call _putchar que call_asd
supongo que hay una explicacion...
salu2! y gracias por leer mis estupideces xD
En línea
Inside The Source Code
Necesitas ser usuario para ver los enlaces
Crear Usuario
Hacer Sesion
Linux Registred User #460377
FreakMind
Habitual
Desconectado
Mensajes: 185
Re: algo parecido a boulevar of broken dreams xD
«
Respuesta #1 en:
Diciembre 26, 2007, 06:43:43 »
Lo que estoy por decir quizas es una estupidez, pero asd es un puntero. No tendrias que desreferenciarlo para usar la funcion?
Salu2, FreakMind
En línea
Connoisseurs of C semantics find C++ inferior to ++C
Ni0
Gran Colaborador
Desconectado
Mensajes: 1362
Ni0-inside the source code
Re: algo parecido a boulevar of broken dreams xD
«
Respuesta #2 en:
Diciembre 26, 2007, 06:47:36 »
nose xD, nose que es desreferenciarlo..., esto:
long d;
long *asd;
/*blablabla*/
d = asd;
asm("push...
eso es desreferenciarlo??
pero, de todas formas, asd tiene guardada un valor, que resulta ser la direccion...
bueh, espero la respuesta
salu2!
En línea
Inside The Source Code
Necesitas ser usuario para ver los enlaces
Crear Usuario
Hacer Sesion
Linux Registred User #460377
Ni0
Gran Colaborador
Desconectado
Mensajes: 1362
Ni0-inside the source code
Re: algo parecido a boulevar of broken dreams xD
«
Respuesta #3 en:
Diciembre 26, 2007, 06:51:47 »
bueh, probe con lo que pense que es desreferenciar
y compile esto:
Código:
#include <stdio.h>
long d;
long *asd;
main()
{
for(asd = (long *)main; asd < (long *)10000000; asd++)
if(*asd == 1359488511)
break;
d = (long)asd;
asm("push $0x4E");
asm("call _d");
getchar();
}
y pasa lo mismo
salu2!
En línea
Inside The Source Code
Necesitas ser usuario para ver los enlaces
Crear Usuario
Hacer Sesion
Linux Registred User #460377
Ni0
Gran Colaborador
Desconectado
Mensajes: 1362
Ni0-inside the source code
Re: algo parecido a boulevar of broken dreams xD
«
Respuesta #4 en:
Diciembre 26, 2007, 07:18:27 »
mmmmmm
me di cuenta de algo... es estupido xD
pasa que no es la unica direccion que tiene ese valor xD, por lo que da error xD, de casualidad el codigo que comprobaba que sean los 2 iguales me dio los 2 iguales xD
asique investige un poco mas y cree esto:
Código:
#include <stdio.h>
long *asd;
main()
{
for(asd = (long *)main; asd < (long *)10000000; asd++)
if(*asd == 1359488511 && *(asd + 1) == (-1869610944) && *(asd + 2) == 0)
break;
printf("%d %d", putchar, asd);
getchar();
asm("push $0x4E");
asm("call _asd");
getchar();
}
y ahora las veces que probe me da el mismo numero, pero de todas formas no anda xD
salu2!
En línea
Inside The Source Code
Necesitas ser usuario para ver los enlaces
Crear Usuario
Hacer Sesion
Linux Registred User #460377
FreakMind
Habitual
Desconectado
Mensajes: 185
Re: algo parecido a boulevar of broken dreams xD
«
Respuesta #5 en:
Diciembre 26, 2007, 07:38:40 »
Un puntero contiene una direccion de memoria. Al desreferenciarlo obtenes el contenido de esa direccion
como aca
asd = (long *)putchar;
printf("%d", *asd);
Salu2, FreakMind
En línea
Connoisseurs of C semantics find C++ inferior to ++C
Ni0
Gran Colaborador
Desconectado
Mensajes: 1362
Ni0-inside the source code
Re: algo parecido a boulevar of broken dreams xD
«
Respuesta #6 en:
Diciembre 26, 2007, 07:48:50 »
con eso averiguo que hay en la direccion que tiene putchar, para despues encontrarlo, ya que lo que intento, es hacer una copia trucha de lo que hace codelogman en el post original de bloulevard of..
salu2!
En línea
Inside The Source Code
Necesitas ser usuario para ver los enlaces
Crear Usuario
Hacer Sesion
Linux Registred User #460377
Ni0
Gran Colaborador
Desconectado
Mensajes: 1362
Ni0-inside the source code
Re: algo parecido a boulevar of broken dreams xD
«
Respuesta #7 en:
Diciembre 26, 2007, 08:18:31 »
creo que me voy a volver loco, y mas ustedes que leen todas mis estupideces
estube haciendo pruebas y me di cuenta que si no se hace esto:
printf("%d", putchar);
la parte del for va a terminar mal, osea, da error en la aprte del for, el windiows me cierra el programa, y no basta que hacer putchar('a');, no, hay que hacer lo del printf, no se porque...
pero no logro entender porque no funciona esto:
Código:
#include <stdio.h>
long *asd;
main()
{
/*la uso para que la encuentre xD*/
for(asd = (long *)main; asd < (long *)10000000; asd++)
if(*asd == 1359488511 && *(asd + 1) == (-1869610944) && *(asd + 2) == 0)
break;
printf("%d %d\n", putchar, asd);
asm("push $0x4E");
asm("call _asd");
getchar();
}
ya que si la encuentra y es el mismo numero, asuvez cree esto:
Código:
#include <stdio.h>
int (*pc)(int);
long *asd;
main()
{
printf("%d\n", putchar);
for(asd = (long *)main; asd < (long *)10000000; asd++)
if(*asd == 1359488511 && *(asd + 1) == (-1869610944) && *(asd + 2) == 0)
break;
pc = (long *)asd;
(*pc)('N');
getchar();
}
y funciona
pero bueh, quiero sabre porque no anda el call xD
salu2!
En línea
Inside The Source Code
Necesitas ser usuario para ver los enlaces
Crear Usuario
Hacer Sesion
Linux Registred User #460377
AzRaEL
Moderador Global
Colaborador
Desconectado
Mensajes: 415
... a light to burn all the empires
Re: algo parecido a boulevar of broken dreams xD
«
Respuesta #8 en:
Enero 10, 2008, 12:39:00 »
Mira, aqui esta el code completo en C, pon atencion que la tecnica es pasar un objeto (messagebox) a traves de una llamada a direccion: (de paso contesto la pregunta del otro user sobre el code incompleto..)
#define UL unsigned long
#define CH char
typedef unsigned long (__stdcall* fLoadLibraryA)
(
char* lpLibFileName
);
typedef unsigned long (__stdcall* fMessageBoxA)
(
int hWnd,
char* lpText,
char* lpCaption,
unsigned long uType
);
fLoadLibraryA _LoadLibraryA;
fMessageBoxA _MessageBoxA;
int xstrlen(char *szstring)
{
unsigned short i=0;
while(*szstring++)
{
i++;
}
return i;
}
int xstrcmp(char *szfirst,char *szsecond)
{
unsigned short i = 0;
while(*(szfirst+i) == *(szsecond+i) && *(szfirst+i))
{
i++;
}
return i - xstrlen(szfirst);
}
void *xGetAddress(UL ulKrnlBase,char *szApi)
{
unsigned long *ulPt=0;
unsigned long *ulOrdRva;
unsigned long *ulFAddr;
unsigned int uNumFunc;
short sNum;
unsigned int uCount;
char **szNamez=0;
ulPt = (UL * )ulKrnlBase;
(UL )ulPt = *(UL* )((UL)ulPt+0x3C)+ulKrnlBase;
(UL )ulPt = *(UL* )((UL)ulPt+0x78)+ulKrnlBase;
(UL )uNumFunc = *(UL* )((UL)ulPt+0x18)+ulKrnlBase;
(UL )ulFAddr = *(UL* )((UL)ulPt+0x1C)+ulKrnlBase;
(CH*)szNamez = *(CH**)((UL)ulPt+0x20)+ulKrnlBase;
(UL )ulOrdRva = *(UL* )((UL)ulPt+0x24)+ulKrnlBase;
for(uCount = 0;uCount < uNumFunc;uCount++)
{
if(xstrcmp(*szNamez+ulKrnlBase,szApi) == 0)
{
sNum = (short)ulPt = *(UL*)((UL)ulOrdRva+(uCount*sizeof(unsigned short)));
(UL)ulPt = ((UL)ulFAddr+(sNum*sizeof(unsigned long)));
return (void*)((unsigned long)ulKrnlBase + *ulPt);
}
szNamez++;
}
return 0;
}
void LoadAddress(UL ulAddress)
{
unsigned long ulUsrBase;
_LoadLibraryA = (fLoadLibraryA)xGetAddress(ulAddress, "LoadLibraryA");
ulUsrBase = (unsigned long)_LoadLibraryA("USER32");
_MessageBoxA = (fMessageBoxA)xGetAddress(ulUsrBase, "MessageBoxA");
_MessageBoxA(0,"message for the antivirus: F U C K Y O U","NOD32",0);
}
unsigned long GetK32(unsigned long ulAddress)
{
unsigned char *szKernel;
szKernel = (char*)ulAddress;
while(1)
{
if(*szKernel == 'M' && *(szKernel+0x1) == 'Z')
{
ulAddress = (unsigned long)szKernel;
szKernel += *(szKernel+0x3C);
return(*szKernel == 'P' && *(szKernel+0x1) == 'E') ? ulAddress:0;
}
szKernel -= 0x1000;
if((unsigned long)szKernel <= 0x70000000) // ... so send my resignation to the bride and the groom ...
{
return 0;
}
}
}
int main()
{
unsigned long ulAddress;
__asm
{
mov eax, [esp+8h]
and eax,0FFFF0000h
push eax
call GetK32
mov [ulAddress],eax
test eax,eax
jne Good
ret
Good:
}
LoadAddress(ulAddress);
return 0;
}
#pragma comment(linker,"/ENTRY:main")
#pragma comment(linker,"/MERGE:.rdata=.data")
#pragma comment(linker,"/MERGE:.text=.data")
#pragma comment( linker, "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup"
#pragma comment(lib,"msvcrt.lib")
#if (_MSC_VER < 1300)
#pragma comment(linker,"/IGNORE:4078")
#pragma comment(linker,"/OPT:NOWIN98")
#endif
#define WIN32_LEAN_AND_MEAN
Espero te sirva para entender que lo que quieres pasar en texto esta bien pero la tecnica es distinta, no es un simple putchar o putc.
saludos
«
Última modificación: Enero 10, 2008, 12:44:16 por codelogman
»
En línea
Carbide Senior Developer
crackenfind.net
eof-project.net
Ni0
Gran Colaborador
Desconectado
Mensajes: 1362
Ni0-inside the source code
Re: algo parecido a boulevar of broken dreams xD
«
Respuesta #9 en:
Enero 10, 2008, 10:47:07 »
si, se nota que es diferente xD
gracias por responder, voy a fijarme bien en tu code, a estudiarlo bien, asi aprendo.
otra cosa, espero no ofender al decir:
algo parecido a... xD
salu2!
En línea
Inside The Source Code
Necesitas ser usuario para ver los enlaces
Crear Usuario
Hacer Sesion
Linux Registred User #460377
dreams_eater
Habitual
Desconectado
Mensajes: 178
Re: algo parecido a boulevar of broken dreams xD
«
Respuesta #10 en:
Enero 10, 2008, 12:30:43 »
Recordar punteros dobles y triples que hice para un largo proyecto (los punteros pasados por copia se salian del alcance y se perdian XD ). me hiso ver esto como algo analogo.
aqui esta el code.
Código:
#include <stdio.h>
long *asd;
main()
{
/*la uso para que la encuentre xD*/
for(asd = (long *)main; asd < (long *)10000000; asd++)
if(*asd == 1359488511 && *(asd + 1) == (-1869610944) && *(asd + 2) == 0)
break;
printf("%d %d\n", putchar, asd);//son iguales
asm("pusha");
asm("movl $0x4E,%eax");
asm("push %eax");
asm("call *(_asd)");
asm("pop %eax");
asm("popa");
getchar();
}
O quiza me inspiro la poesia dark de codelogman.
En línea
"La juventud envejece, la inmadurez se supera, la ignorancia puede educarse, y la borrachera desperjarse, pero la estupidez dura para siempre" - Aristófanes
Páginas:
[
1
]
Comunidad Underground Hispana
|
Programacion
|
Programación
|
Carbide C/C#/C++
| Tema:
algo parecido a boulevar of broken dreams xD
« anterior
próximo »
Ir a:
Por favor selecciona un destino:
-----------------------------
Foros De Consulta General
-----------------------------
=> Novedades
=> Dudas, Comentarios Y Sugerencias
=> Top 100
=> Off-Topic
=> Revista E-Zine
===> Noticias
-----------------------------
Phreaking, Hacking y Seguridad
-----------------------------
=> HacK GeneraL
===> Ingenieria Inversa
===> Encriptacion, Cryptografia
===> TV HACK
===> Cursos y Ezines
=====> Trucos Internet
=====> Textos Hacking
===> Defacing
=> Seguridad
=> Phreaking
===> Moviles
=> Bug y Exploits
===> Directorio de Exploits
=> Wargames, Retos Hack
-----------------------------
Hack Novato
-----------------------------
=> Hack para newbies
=> Todo Messenger
=> Troyanos y virus
-----------------------------
Sistemas Operativos
-----------------------------
=> Windows y otros sistemas operativos no libres
===> Problemas Tecnicos Windows
=> Sistemas operativos libres.
===> GNU/Linux
===> Manuales y Tutoriales
===> Descargas
-----------------------------
Programacion
-----------------------------
=> Programación
===> Programación Basica
===> Otros Lenguajes
===> Visual Basic y Net
===> ASM
===> Programacion Shell
===> Perl
===> Carbide C/C#/C++
===> Batch
===> SQL
=> Programacion para webmasters
===> Consultas Generales
===> Php
===> Html, XHTML, CSS
===> Java - Java Script
===> CMS O Scripts Pre-Fabricados
===> Posicionamiento en buscadores
-----------------------------
Artes Graficas
-----------------------------
=> Diseño Grafico
===> Battle Arts
===> Flash
===> Tutoriales
===> Galerías
===> Software
-----------------------------
Area Tecnica
-----------------------------
=> Networking & Wireless
=> Overclocking, Refrigeracion y demas
=> Hardware
===> Biblioteca Tecnica
=> Electronica Y Robotica
-----------------------------
Programas
-----------------------------
=> Software
===> Configuraciones de software
===> Pedidos de software
=> Cracks & Serialz
=> P2p, Bittorrent, Elinks
-----------------------------
Multimedia Y Divx
-----------------------------
=> Juegos PC Y Consolas
===> Dudas ayudas y comentarios de juegos
===> Pedidos de juegos
===> Juegos de Consola
=> Mp3
=> Multimedia
=> Peliculas Divx
-----------------------------
Entretenimiento Y sitios de interes
-----------------------------
=> Juegos, Humor y Adultos. (Diversión)
===> Adultos
=> Paginas Webs Recomendadas
=> Videos
Powered by SMF 1.1.6
|
SMF © 2006-2007, Simple Machines LLC
Loading...