Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - .mokk.

#1
Java / MEF SUmatoria de Bases
8 Abril 2011, 19:58 PM
Bueno esto es un pequeño projecto que dejaron de tarea en la escuela, que trata sobre una Sumatoria de bases en Maquina de Estado Finito(MEF), al principio fue solamente en base 2, pero luego nos pidio en base 3, entonces lo que haciamos era la matriz manualmente, entonces fue que pense mejor en que el usuario meta la base que decee y automaticamente cree la matriz.

Bueno aqui dejo una imagen sobre lo que vendria siendo una Maquina de Estado Finito


Y ya de ahi se crean las Tablas F & G, F son las entradas y a donde nos enviaran y G, las salidas que obtendriamos
Bueno ya sin mas aqui les dejo mi code, por si les interesa n_n, o algo que sea de utilidad.

CODIGO

Clase Consola:
Código (java) [Seleccionar]
package MEF;
/**
* @Author Victor
*/

public class Consola
{

public static void main(String[] args)
{

BASE Obj = new BASE();
//Obj.convertirbybase(0);
int base = 0;
String a="0",b="0";
do{
base = read.dataInt("Teclee Base 2 - 9: ") ;
}while(base < 2);

String [][] f = Obj.Llenar(base, 0);
//String [][] g = Obj.Llenar(base, 0);
String [][] g = Obj.Llenar(base, 1);
Obj.SOP(Obj.imprimir(base, f, g));

Obj.SOP("\n\n");

a = read.data("Teclee Primer valor: ");
b = read.data("Teclee Segundo valor: ");

String suma = Obj.suma(a, b, f, g);
Obj.SOP("\nLa Suma de " + a + " y " + b + " es igual a: " + suma);

}

}


Clase BASE
Código (java) [Seleccionar]

package MEF;
/**
*
* @author Victor
*/
public class BASE
{
    int pos = 1;
public String suma(String a, String b, String [][] f, String [][] g)
{
String n,nn;
String r = "";
while(a.length() > b.length())
{
b = "0" + b;
}
while(a.length() < b.length())
{
a = "0" + a;
}

for(int x = (a.length()-1); x>=0; x--)
{
n = String.valueOf(a.charAt(x)) + "" + String.valueOf(b.charAt(x));
for(int t = 0; t<f[0].length; t++)
{
nn = (f[0][t]);
if(n.equals(nn))
{
r = valor(t,f,g) + r;
}
}
}

if(pos == 2)
r = "1"+r;

return r;

}

private String valor(int columna,String [][] f,String [][] g)
{
String m = "";
if (pos == 1)
{
if(f[1][columna] != "SA")
{
pos = 2;
}
m = g[1][columna];
}else{
if(f[2][columna] == "SA")
{
pos = 1;
}
m = g[2][columna];
}
return m;
}

public String imprimir(int base,String [][] f, String [][] g)
{
String k = "";
k = k + ("\nTABLA F - BASE:" + base+"\n");

for(int x = 0; x<3; x++)
{
if(x == 1)
k = k + ("SA|");
else if(x == 2)
k = k + ("CA|");
else
k = k + ("EI|");
for(int xx = 0; xx<(base*base); xx++)
{
k = k + (f[x][xx] + "|");
}

k = k + ("\n");
}

k = k + ("\nTABLA G - BASE:" + base+"\n");
for(int x = 0; x<3; x++)
{
if(x == 1)
k = k + ("SA|");
else if(x == 2)
k = k + ("CA|");
else
k = k + ("EI|");
for(int xx = 0; xx<(base*base); xx++)
{
while(g[0][xx].length() > g[x][xx].length())
{
g[x][xx] = " " + g[x][xx];
}
k = k + (g[x][xx] + "|");
}
k = k + ("\n");
}

return k;
}



//Llenando la matriz
public String [][] Llenar(int base, int tipo)
{
//Creamos una matriz la cual luego llenaremos
String [][] m = new String[2][base*base];
int n=0,xx = 0;
//Vemos que matriz es la que llenaremos f=0 o g=1
if(tipo == 0)
{
String [][] f = new String[3][base*base];

for(int x = 0; x<3; x++)
{
xx = 0;
for(int i = 0; i<base; i++)
{
for(int ii = 0; ii<base; ii++)
{
if(x == 1)
{
if((i+ii) < base)
f[x][xx] = "SA";
else
f[x][xx] = "CA";
xx++;;
}else if(x == 2){
if(((i+ii)+1) < base)
f[x][xx] = "SA";
else
f[x][xx] = "CA";
xx++;;
}else{
f[x][n] = convertirnumero(i) + "" + convertirnumero(ii);
n++;
}
}
}
}
m = f;
}else{
String [][] g = new String[3][base*base];

for(int x = 0; x<3; x++)
{
xx = 0;
for(int i = 0; i<base; i++)
{
for(int ii = 0; ii<base; ii++)
{
if(x == 1)
{
if((i+ii) < base)
g[x][xx] = convertirnumero(i+ii);
else
g[x][xx] = convertirnumero(g(base,i,ii));
xx++;;
}else if(x == 2){
if(((i+ii)+1) < base)
g[x][xx] = convertirnumero((i+ii+1));
else
g[x][xx] = convertirnumero(g1(base,i,ii));
xx++;;
}else{
g[x][n] = convertirnumero(i) + "" + convertirnumero(ii);
n++;
}
}
}
}
m = g;
}
return m;
}

public void SOP(String msg)
{
System.out.print(msg);
}

private static int g(int base, int i, int ii)
{
return (int)((i+ii)-base);
}

private static int g1(int base, int i, int ii)
{
return (int)((i+ii+1)-base);
}

public static String convertirnumero(int i)
{
//System.out.println("\n" + i);
String [] letras = {"A", "B", "C" , "D", "E", "F", "G", "H"};
for(int n = 0; n<(n+letras.length); n++)
{
if(i == n)
{
if(n >= 10)
return letras[n-10];
else
return String.valueOf(n);
}
}
return "0";
}

}


Clase read
Código (java) [Seleccionar]
package MEF;
/**
*
* @author cryptt3r
*/

import java.io.*;
public class read
{
public static boolean error;
public static String data(String message) {
    String sdato = "";
    System.out.print(message);
    try {
      // Definir un flujo de caracteres de entrada: flujoE
      InputStreamReader isr = new InputStreamReader(System.in);
      BufferedReader flujoE = new BufferedReader(isr);
      // Leer. La entrada finaliza al pulsar la tecla Entrar
      sdato = flujoE.readLine();
    }
    catch(IOException e) {
      System.err.println("Error: " + e.getMessage());
    }
    return sdato; // devolver el dato tecleado
  }
public static int dataInt(String message){
    try {
    error=false;
    int val=Integer.parseInt(data(message));
    if (val<-32768||val>32767)
    error=true;
      return val;
    }
    catch(NumberFormatException e) {
      return Integer.MIN_VALUE; // valor más pequeño
    }
}

public static short datoShort(String message){
  try {
return Short.parseShort(data(message));
}
catch (NumberFormatException e){
return Short.MIN_VALUE;
}
}



public static long dataLong(String message){
try {
return Long.parseLong(data(message));
}
catch (NumberFormatException e){
return Long.MIN_VALUE;
}
}

public static float dataFloat(String message){
try {
Float f = new Float(data(message));
return f.floatValue();
}
catch (NumberFormatException e){
return Float.NaN;
}
}

public static double dataDouble(String message){
try {
Double d = new Double(data(message));
return d.doubleValue();
}
catch (NumberFormatException e){
return Double.NaN;
}
}
/*public static char dataChar(String message){
try {
Char d = new Char(data(message));
return d.charValue();
}
catch (NumberFormatException e){
return Char.NaN;
}
}*/

}


Solamente me falto, hacer la comprobacion de que los numeros que ingresemos ninguno sea mayor a la base, sorry se me paso eso, pero lo pueden hacer ahi mientras leen.
#2
Bueno la pregunta es facil de entender (creo), lo que sucede esque he visto programas o aplicaciones que logran editar la memoria o el codigo de otra aplicacion en la cual luego de editarlo se quedan guardado los cambios al principio lo hacia con WriteProcessMemory, pero esto lo tenia que hacer siempre al iniciar mi aplicacion, entonces lo que yo deceo es hacer un programa que me edite el codigo de otro quedando guardados los cambios, asi como lo hace OllyDBG que abro una aplicacion y de ahi puedo editarlo y guardar los cambios.

Bueno espero y me puedan ayudar ya que la verdad e buscado pero no encuentro siempre encuentro pero de WriteProcessMemory cosa que eso no es lo que ocupo,
Gracias (:
#3
.NET (C#, VB.NET, ASP) / [Ayuda] Memory Scan
7 Enero 2011, 07:16 AM
Bueno he llevado tiempo en esto y no logro avanzar lo que deceo es poder obtener el value de la memoria de algun proceso, he leido y hecho varios intentos pero no e logrado concretarlo, por lo que he pasado aca a ver si tienen alguna idea de como hacerlo asi como Cheat Engine, que permite buscar un texto en la memoria de los procesos, eso es lo que deceo hacer, lo mas lejos que llegue fue hacerlo con ReadProcessMemory, pero tarda demasiado por lo que si pudiesen ayudarme seria de gran ayuda, tambien si esto se puede hacer en algun otro lenguaje podria ayudarme asi nomas hago que suelte el address de localizacion en un txt. :P

Espero contar con la ayuda de alguno de ustedes ^^

Gracias,
Saludos.

P.D. Feliz dia de Reyes (Para los que lo festejan) :D
#4
Bueno ahora estoy haciendo una aplicacion que a la ves trabaje como ayuda a otro programa(Juego)

Ahora les explico un ejemplo de lo que hace:
Dentro del juego estoy y si deceo hay un campo de texto, mientras mi programa esta corriendo y leyendo lo que escriba ahi y segun lo que escrib ejecutara una serie de comandos para el juego (No no es Trainer) de ayuda o de informacion.

Bueno ahi ya es todo, pero hay algo malo que el Address donde leo es Dinamico por lo tanto cada que lo abro y ejecuto mi programa debo rellenar un campo de texto donde coloco el address ese nuevo address lo obtengo mediante el Cheat Engine, pero ahora deceo saber cual es la forma de poder abrir mi programa y automaticamente detecte esa linea empece a leer por google pero no e encontrado nada que me ayude a solucionarlo si e visto ejemplos pero solo para uso de ReadProcessMemory y nada mas, y cuando encuentro sobre e tema de cuando es dinamia el address no entiendo muy bien como es ademas de que no encontre ninguno en VB.NET, Segun usando el Puntero + los Offset obtendria el resultado pero no consigo entender muy bien como es, y cuando lo hago al final no me da el address verdadero =/

Bueno creo explicarme mas o menos si alguien pudiese ayudarme se lo agradeceria mucho ^^

Aqui les dejo una imagen de los punteros para llegar a mi Address(El Puntero que muestro nunca cambia)


En el primer Address of Pointer ya sume el BaseAddres con el Pointer ^^, el Address al que necesito llegar es el 043A4FD8

O si conocen alguna otra manera de obtener un address Dinamico diganmela porfavor ^^


Porfavor quien podria explicarmelo o darme una mejor idea porque llevo ya 3 dias en eso solo es y no lo entiendo muy bien aun jeje :$

Desde ya Gracias, por tomarte el tiempo de leerlo jeje ^^

P.D. Si se que aqui se trato una ves sobre ese tema pero fue en C++, ademas de que alfinal no mostro bien si lo soluciono o no y no respondia ahi porque fue hace 3 meses mas o menos.