elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21
141  Programación / Ingeniería Inversa / Re: ¿Leer variable desde RAM? (C# - con source obtenido desde Reflector) en: 15 Agosto 2013, 05:09 am
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  Programación / Ingeniería Inversa / Re: ¿Leer variable desde RAM? (C# - con source obtenido desde Reflector) en: 23 Julio 2013, 21:24 pm
No logro entender tu explicación, desconozco de C# pero la instrucción:

Código
  1. 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
  1. 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  Programación / Ingeniería Inversa / Re: ¿Leer variable desde RAM? (C# - con source obtenido desde Reflector) en: 23 Julio 2013, 17:57 pm
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
  1. 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  Programación / Programación C/C++ / Re: [Opinión] Interesante manera de usar char* con cout en: 23 Julio 2013, 13:55 pm
Usa cout como siempre.

Imaginate ver 
Código
  1.  while(*text != '\0') cout << *text++;
2 años despues, pensarás que que carajo estás haciendo...
Tienes razón  :laugh:
Código
  1. void something(char **text){
  2.   cout << *text;
  3. }
  4. char *str = "hello world";
  5. something(&str);

Esto es lo mismo que poner:

Código
  1. char *str = "hello world";
  2. 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  Programación / Programación C/C++ / [Opinión] Interesante manera de usar char* con cout en: 23 Julio 2013, 13:35 pm
Buenas!!

Pues justo hice una función como esta:
Código
  1. void something(char *text){
  2.    cout << *text;
  3. }
  4.  
Y sólo me imprimía text[0].
Suponí que podría ir aumentando el puntero hasta llegar a \0:
Código
  1. void something(char *text){
  2.    while(*text != '\0') cout << *text++;
  3.    // nota: si ponemos *text++ en el while()
  4.    // se salta el caracter 0
  5. }
  6.  
Efectivamente, funciona.

Pero luego pensé en otra manera (sin usar while), y me salió esto:
Código
  1. void something(char **text){
  2.    cout << *text;
  3. }
  4. char *str = "hello world";
  5. something(&str);
  6.  

¿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 / Programación C/C++ / Re: ¿Puedo hacer esto? en: 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  Programación / Desarrollo Web / Re: capturar Nacionalidad en: 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  Foros Generales / Sugerencias y dudas sobre el Foro / Re: Con quién reportar "error" del foro? en: 23 Julio 2013, 10:30 am
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  Programación / Ingeniería Inversa / Re: ¿Leer variable desde RAM? (C# - con source obtenido desde Reflector) en: 23 Julio 2013, 10:24 am
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  Programación / Programación C/C++ / Re: 2 dudas sobre templates y char[] en: 22 Julio 2013, 18:33 pm
A mi esto me funciona:

Código
  1. #include<iostream>
  2.  
  3. using namespace std;
  4.  
  5. template<class T> void swapVariables(T *x, T *y){
  6. T temp = *y;
  7. *y = *x;
  8. *x = temp;
  9. }
  10.  
  11. int main(){
  12. const char *a="aaa";
  13. const char *b="bbb";
  14. cout<<a<<","<<b<<endl;
  15. swapVariables(&a,&b);
  16. cout<<a<<","<<b<<endl;
  17. }
  18.  

Output:
Código:
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[]
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines