|
1
|
Programación / Ingeniería Inversa / Ing inversa código sobre VxWorks
|
en: 4 Julio 2018, 18:50 pm
|
Necesito información para sacar el código de alguna aplicación en este tipo de sistemas operativos. Más concretamente para depurar un binario de un PCC B&R. Sé que el entorno de programación utiliza gcc y gdb para la depuración. Los objetos generados son .o pero no he encontrado ningún tipo de información sobre los binarios de estos PCC (.br) y con un editor hexadecimal, en principio no se parecen a nada que haya visto en sistemas operativos convencionales.
Por lo que he leido estos sistemas operativos suelen compartir el espacio de memoria de modo que un task podría leer información del resto. Si alguien sabe algo sobre esto también me sería de ayuda.
Cualquier información que sirva para iniciarme en el funcionamiento, la programación y la depuración de binarios en este tipo de sistemas (tanto el VxWorks como la implementación del fabricante) sería muy agradecida y de mucha ayuda.
Gracias de antemano.
Sa1uDoS
EDIT: Si a alguien más le interesa el proyecto podría facilitarle binarios y un software básico, a modo de crackme para pruebas.
|
|
|
2
|
Programación / Programación C/C++ / Re: Duda Programa Sencillo (simulación)
|
en: 2 Abril 2015, 19:08 pm
|
Ahí tienes una mezcla rara de C y C++. Me ha parecido buena idea para practicar un poco con clases intentar hacer la simulación, aquí os lo dejo, todavía quedan cosas. #include <iostream> #include <cstdlib> using namespace std; class Arbol { public: Arbol(int x, int y): quemado(false) {p_x=x;p_y=y;}; void fuego(){quemado=true;}; int p_x, p_y; bool quemado; }; class Bosque { public: Bosque(int a); void Llenar(float probabilidad); void iniciar_incendio(); ~Bosque(); private: int elementos; void incendio(int x, int y); Arbol ***matriz; }; Bosque::Bosque(int a) { elementos=a; matriz=new Arbol**[a]; for(int i=0;i<=a;i++) matriz[i]=new Arbol*[a]; } void Bosque::Llenar(float probabilidad) { int x, y; float i; srand(time(NULL)); for(i=elementos*elementos*probabilidad;i>0;i--) { do { x=rand()%elementos; y=rand()%elementos; }while(matriz[x][y] != NULL); matriz[x][y]=new Arbol(x,y); } } void Bosque::iniciar_incendio() { int x, y; do { x=rand()%elementos; y=rand()%elementos; }while(matriz[x][y] == NULL); incendio(x, y); } void Bosque::incendio(int x, int y) { int i, j; for(i=-1;i<=1;i++) { for(j=-1;j<=1;j++) { if(((x+i)>=0 && (x+i)<elementos) && ((y+j)>=0 && (y+j)<elementos)) { if(matriz[x+i][y+j]!=NULL&&matriz[x+i][y+j]->quemado==false) { matriz[x+i][y+j]->fuego(); incendio(x+i, y+j); } } } } } Bosque::~Bosque() { int i; for(i=0;i<elementos;i++) for(int j=0;j<elementos;j++) delete matriz[i][j]; for(i=0;i<elementos;i++) delete[] matriz[i]; delete[] matriz; } int main() { Bosque bosque(10); bosque.Llenar(0.3); bosque.iniciar_incendio(); return 0; }
Sa1uDoS
|
|
|
4
|
Programación / Ingeniería Inversa / Re: [KeygenMe] Matrix
|
en: 27 Marzo 2015, 12:41 pm
|
Ahora solo tienes que hacer lo siguiente: Como un keygen genera pass para un determinado usuario, ya sabes lo que valen las sumas del usuario.
Ahora tienes 9 incógnitas y una ecuación, dejas todo en función de 1 variable y generas las otras para sacar todas las soluciones.
Tienes que tener en cuenta que, para simplificar, todas las variables tienen que estar en el intervalo [97,122]
Sa1uDoS
|
|
|
5
|
Programación / Ingeniería Inversa / Re: [KeygenMe] Matrix
|
en: 26 Marzo 2015, 18:59 pm
|
¡Hola!
Con los datos que habéis ido reseñando, he comprobado que disponiendo el nombre y la clave en forma matricial de 3x3 y multiplicándolas, la suma de los valores de la matriz obtenida es el valor que se compara con 4CDFB.
...
Ahora voy a repasar mis antiguos conocimientos de matrices para ver si, conociendo el valor del producto de dos matrices y una de ellas se puede sacar la otra.
Saludos
Multiplicándolas en forma matricial, eso es . No se puede sacar la otra, es un sistema con muchas más incógnitas que ecuaciones, 3x3=9 incógnitas frente a una única ecuación, se da un sistema compatible indeterminado . Sigue por ahí que ya has hecho lo más difícil, ya sólo te queda resolver la parafernalia matemática y crear un pequeño código que calcule las soluciones posibles . Sa1uDoS
|
|
|
7
|
Programación / Ingeniería Inversa / Re: [KeygenMe] Matrix
|
en: 25 Marzo 2015, 15:55 pm
|
mr blood tiene razón,se puede hacer por ejemplo si usan como usuario zzzzzzzzz y clave zzzzzzzz ya sabemos que son 9 caracteres para cada uno, el valor obtenido al final es mucho mayor que el buscado, pero me da problemas para cualquier usuario, tiene que ser muy especifico ya que la diferencia entre los valores de los caracteres es de 138 14b y 13f lo cual dificulta encontrar un serial válido para cualquiera. yo usando tincopasa (ni siquiera puedo usar mi nick completo, con eeppnnppp me paso del valor buscado y después la convinación no me permite seguir porque me paso o me quedo corto con el valor final, así que tendré que inventar un usuario, pero ya deja de ser keygen
ahhhh y supongo que lo de matrix es por usar matrices para la resolución.
Eres el que más se ha acercado momento. Y sí, por ahí van los tiros. EDITO: el análisis de mcksys está incompleto, lo que el hizo es básicamente el principio, para mi es como resolver una matriz de a.b donde a y b tienen 9 elementos ubicados en cada matriz con 3 columnas y 3 filas, por lo que las operaciones se repiten 3 veces. soy muy malo para explicar.
Cada vez afinas un poco más xD. Sa1uDoS
|
|
|
8
|
Programación / Ingeniería Inversa / Re: [KeygenMe] Matrix
|
en: 25 Marzo 2015, 15:10 pm
|
No seré quien se meta con sus resultados, pero reitero que existe, al menos, una pareja usuario contraseña utilizando caracteres en el intervalo a-z en minúsculas.
Lo que puso MCKSys no concuerda con el código que yo hice.
Sa1uDoS
|
|
|
|
|
|
|