Cita de: Novlucker en 23 Julio 2013, 21:32 PMQué coño. Lo he hecho y me ha salido.
Se supone que el array de bytes se obtiene con un método, así que ... ¿Qué tal si cargas el ejecutable por reflection y ejecutas el método?
Saludos
Muchas gracias!!!


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úCita de: Novlucker en 23 Julio 2013, 21:32 PMQué coño. Lo he hecho y me ha salido.
Se supone que el array de bytes se obtiene con un método, así que ... ¿Qué tal si cargas el ejecutable por reflection y ejecutas el método?
Saludos
Cita de: .:UND3R:. en 23 Julio 2013, 21:05 PMLo que pasa es que no tengo el source completo y no puedo compilarlo.
No logro entender tu explicación, desconozco de C# pero la instrucción:byte[] executableSource = doSomethingToGetExecutableSource();
En todos los lenguajes de programación que conozco retornaría un valor tras llamar a una función, esta variable es tipo byte, lo más lógico es que solo se retorne un código de notificación (sin errores o con errores), esto es utilizado para verificar si la función se logró ejecutar sin problemas:
FuncionA(){
if(a!=b){
return ERROR1 // constante ERROR1 que simboliza a un simple número.
}else{
...
...
return SUCCESS // constante SUCCESS que simboliza a un simple número.
}
y si es como tu dices, entonces tomas el source y borras todo pero todo y solo dejas la función:doSomethingToGetExecutableSource();
Compilas, luego con un debugger, analizas las instrucciones de la función.
Las anotas en un notepad o lo que sea de tu agrado.
Vuelves a compilar pero con todo el source, ya con eso buscas la secuencia de instrucciones (estarías buscando en donde se encuentra la función en ejecutable).
ya localizada la función debes poner un BP en el inicio de ella para saber en que lugar es llamada, obteniendo ese lugar, lo más probable es que logres localizar el puntero a executableSource, en donde debería tener el source del . EXE que se convierte en no se qué o no se qué.
byte[] executableSource = doSomethingToGetExecutableSource();
Cita de: Oblivi0n en 23 Julio 2013, 13:43 PMTienes razón
Usa cout como siempre.
Imaginate verwhile(*text != '\0') cout << *text++;
2 años despues, pensarás que que carajo estás haciendo...
Cita de: amchacon en 23 Julio 2013, 13:44 PMLo sé, lo sé.void something(char **text){
cout << *text;
}
char *str = "hello world";
something(&str);
Esto es lo mismo que poner:char *str = "hello world";
cout<<str;
void something(char *text){
cout << *text;
}
void something(char *text){
while(*text != '\0') cout << *text++;
// nota: si ponemos *text++ en el while()
// se salta el caracter 0
}
void something(char **text){
cout << *text;
}
char *str = "hello world";
something(&str);
Cita de: lapras en 22 Julio 2013, 00:50 AMconst char?
A mi esto me funciona:#include<iostream>
using namespace std;
template<class T> void swapVariables(T *x, T *y){
T temp = *y;
*y = *x;
*x = temp;
}
int main(){
const char *a="aaa";
const char *b="bbb";
cout<<a<<","<<b<<endl;
swapVariables(&a,&b);
cout<<a<<","<<b<<endl;
}
Output:aaa,bbb
bbb,aaa