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ú

Mensajes - Shout

#141
Cita de: Novlucker en 23 Julio 2013, 21:32 PM
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? :P

Saludos
Qué coño. Lo he hecho y me ha salido.
Muchas gracias!!!  ;-) ;-)
#142
Cita de: .:UND3R:. en 23 Julio 2013, 21:05 PM
No logro entender tu explicación, desconozco de C# pero la instrucción:

Código (csharp) [Seleccionar]
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:

Código (csharp) [Seleccionar]
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é.
Lo que pasa es que no tengo el source completo y no puedo compilarlo.
La parte que "descifra" la DLL no la tengo y al sacarla con Reflector veo que está ofuscada con Crypto Obfuscator (una versión nueva que ningún deobfuscator de momento soporta)

Es decir: no puedo compilar (si pudiese, directamente hacía un File.WriteAllBytes(execurableSource) y así de fácil lo lograría).

Por eso, estoy intentando leer lo que tiene desde la RAM.
Descarto tu siguiente respuesta ya que se trata sobre compilar el código fuente y es una opción que he descartado.
#143
No.
Quiero decir que es un .exe que tiene un .dll dentro de sí mismo (embedded) y lo saca, el código fuente es así:
Código (csharp) [Seleccionar]
byte[] executableSource = doSomethingToGetExecutableSource();
Lo que hace es convertirlo a PE e inyectarlo a un proceso.
Por eso, quiero saber qué tiene ese DLL antes de ser convertido a PE (PortableExecutable)
#144
Cita de: Oblivi0n en 23 Julio 2013, 13:43 PM
Usa cout como siempre.

Imaginate ver 
Código (cpp) [Seleccionar]
  while(*text != '\0') cout << *text++; 2 años despues, pensarás que que carajo estás haciendo...
Tienes razón  :laugh:
Cita de: amchacon en 23 Julio 2013, 13:44 PM
Código (cpp) [Seleccionar]
void something(char **text){
   cout << *text;
}
char *str = "hello world";
something(&str);


Esto es lo mismo que poner:

Código (cpp) [Seleccionar]
char *str = "hello world";
cout<<str;

Lo sé, lo sé.
Mi función creaba una especie de "header" con un montón de opciones, parámetros, FAQ y demás (como quien hace command -h), así que necesitaba envolver eso en una función para no tener que escribirlo cada vez.
Y en ese texto grande tenía que insertar algunas variables.
#145
Buenas!!

Pues justo hice una función como esta:
Código (cpp) [Seleccionar]

void something(char *text){
    cout << *text;
}

Y sólo me imprimía text[0].
Suponí que podría ir aumentando el puntero hasta llegar a \0:
Código (cpp) [Seleccionar]

void something(char *text){
    while(*text != '\0') cout << *text++;
    // nota: si ponemos *text++ en el while()
    // se salta el caracter 0
}

Efectivamente, funciona.

Pero luego pensé en otra manera (sin usar while), y me salió esto:
Código (cpp) [Seleccionar]

void something(char **text){
    cout << *text;
}
char *str = "hello world";
something(&str);


¿Cuál creéis que es la mejor opción?
La primera, sin duda, es más simple, pero usa while.
La segunda, al ser un poco más complicada, quita legibilidad, pero parece funcionar más rápido.
#146
Programación C/C++ / Re: ¿Puedo hacer esto?
23 Julio 2013, 12:44 PM
Comprueba si tu programa tiene permisos para acceder al archivo.
También tienes que estar seguro de que existe
#147
Desarrollo Web / Re: capturar Nacionalidad
23 Julio 2013, 10:51 AM
Puedes usar una base de datos de IPs, es lo mejor y más rápido que hay
#148
Efectivamente, es un falso positivo de mod_security
Al ingresar tanta información en la URL (\d-*) mod_security cree que estás metiendo una inyección o estás intentando explotar un LFI.

Aunque... la verdad es que mod_security no sirve para más que para evitar las herramientas automáticas más básicas y a los "hackers" con menos experiencia.
#149
El problema es que lo que contiene esa variable es un .exe (un C# compilado) y no tengo ni la más mínima idea de qué buscar  :silbar:
#150
Cita de: lapras en 22 Julio 2013, 00:50 AM
A mi esto me funciona:

Código (cpp) [Seleccionar]
#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

const char:huh:
¿Las constantes se pueden modificar así de fácil? Sabía que se podía con punteros, ¿pero tan fácil?
Por cierto, a mi también me funciona así, lo que no me funciona es al usar char lol[]