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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


  Mostrar Mensajes
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14
11  Programación / Ingeniería Inversa / Re: Ayuda para desempacar/descifrar confuser 1.9 + CryptoObfuscator en: 28 Diciembre 2017, 16:19 pm
He conseguido desofuscar las cadenas  ;D
Esto pone:
this.byte_0 = Encoding.ASCII.GetBytes("zW$2eWaHNdT~6j86T_&j");
Esa se supone que es una Key que usa el programa para descifrar/cifrar archivos y lo que tengo que saber ahora es como la usa porque creo que podria ser TEA pero no es nada seguro.
12  Programación / Ingeniería Inversa / Re: Ayuda para desempacar/descifrar confuser 1.9 + CryptoObfuscator en: 28 Diciembre 2017, 15:40 pm
Vi que salian 3 dll con MegaDumper pero no se que hacer con ellas  :P
13  Programación / Ingeniería Inversa / Re: Ayuda para desempacar/descifrar confuser 1.9 + CryptoObfuscator en: 28 Diciembre 2017, 09:41 am
Pues estamos atascados mas o menos en el mismo sitio amigo.
Tenemos un codigo imposible de entender porque usa constantes para obtener las strings y esa parte sigue sin solucionar y ademas usa una serie de funciones que dudo mucho que lo haya creado asi el creador del programa. Un ejemplo:
Código
  1. byte[] array = Class41.smethod_0((int)Class37.smethod_0(eData));
En realidad si voy viendo lo que hace cada metodo de cada clase quedaria algo como:
Código
  1. byte[] array = new byte[(int)eData.Length];
Mucho mas comprensible que lo anterior y lo que está es asignando memoria a un array de bytes y el tamaño es el del largo del eData.
Otro ejemplo:
Código
  1. fixed (byte* ptr = &eData[Class4.smethod_0(276)])
queda como:
Código
  1. fixed (byte* ptr = &eData[BitConverter.ToInt32(Class4.byte_0, 276)])
Es mas comprensible pero sigue siendo una maraña de clases que no hay quien la entienda porque ¿donde se declara byte_0?
Código
  1. static Class4()
  2. {
  3. if (Class4.byte_0 == null)
  4. {
  5. string text = Class46.smethod_1<string>(439275159u, 16521681396958907343uL);
  6. byte[] array = Convert.FromBase64String(text);
  7. text = Encoding.UTF8.GetString(array, 0, array.Length);
  8. Stream manifestResourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(text);
  9. Class4.byte_0 = Class6.smethod_1(97L, manifestResourceStream);
  10. }
  11. }
Lo que hace es rellenar byte_0 con datos de un archivo de recursos cuyo nombre no puedo saber ya que Class46.smethod_1 es una funcion con muchas operaciones matematicas para obtener la cadena y que sin la ayuda de un matematico nivel dios no podré entender jajaja.
Pero usando tools llegué a algo más y así quedo esa función:
Código
  1. if (Class4.byte_0 == null)
  2. {
  3. string text = "UmVzaWRlbnQgRXZpbCBSZXZlbGF0aW9ucyAyIERlY3J5cHRlciU=";
  4. byte[] array = Convert.FromBase64String(text);
  5. text = Encoding.UTF8.GetString(array, 0, array.Length);
  6. Stream manifestResourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(text);
  7. Class4.byte_0 = Class6.smethod_1(97L, manifestResourceStream);
  8. }
En realidad la cadena es "Resident Evil Revelations 2 Decrypter%" con lo que esa funcion podria quedar como:
Código
  1. if (Class4.byte_0 == null)
  2. {
  3. Stream manifestResourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Resident Evil Revelations 2 Decrypter%");
  4. Class4.byte_0 = Class6.smethod_1(97L, manifestResourceStream);
  5. }
Class6.smethod_1 si no me equivoco es parte de cryptoofuscator ya que realmente viendo sus tripas creo que descifra el archivo de recurso para meter los bytes en Class4.byte_0. Realmente no creo que el programador sea el responsable  :xD
14  Programación / Ingeniería Inversa / Re: Ayuda para desempacar/descifrar confuser 1.9 + CryptoObfuscator en: 27 Diciembre 2017, 21:13 pm
Comparto el enlace para que puedan echarle un vistazo: https://mega.nz/#!Q8txCZxJ!RAQW55e32jgtSobfckU0zyXRuv_NdgnqJ4W_ZiF3aFw
15  Programación / Ingeniería Inversa / Ayuda para desempacar/descifrar confuser 1.9 + CryptoObfuscator en: 27 Diciembre 2017, 17:37 pm
Hola amigos, llevo varios días intentando desempacar/descifrar un C#.NET C# pero son todo problemas cuando lo intento.
He probado lo siguiente: https://forum.tuts4you.com/topic/36776-unpackcryptoconfuser-19/
Pero:

1- Tengo problemas en el paso 3: de4dot.exe "path" -p un --strtyp delegate --strtok 0600002f". (En mi caso es 0600002f). Si uso el parámetro strtok da error y no da ninguna pista de que falla.
2- No tengo "CryptoObfuscator constant fixer".
3- No tengo "ResourceManager".

También probé con este: https://bbs.cracker.in.th/thread-6462-1-1.html
Con los mismos problemas.

También probé con este: https://es.scribd.com/document/255653902/NET-Decrypt-Constants-Manually-Using-PowerShell

Code:
Código:
$MetadataToken = 0x0600002f
$path = 'C:\...\file.DumpedMethods-cleaned.exe'
$asm = [System.Reflection.Assembly]::LoadFrom($path)
$module = $asm.GetModules()[0]
$decryptionMethod = $module.ResolveMethod($MetadataToken)
$result = $decryptionMethod.Invoke($null,80)
Write-Host $result
Con este resultado:
Código:
Excepción al llamar a "LoadFrom" con los argumentos "1": "No se puede cargar el archivo o ensamblado 'file:///C:\...file.DumpedMethods-cleaned.exe' ni una de sus dependencias. Se esperaba que el módulo tuviera un manifiesto de ensamblado."
En línea: 3 Carácter: 46
+ $asm = [System.Reflection.Assembly]::LoadFrom <<<< ($path)
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException
 
No se puede llamar a un método en una expresión con valor NULL.
En línea: 4 Carácter: 26
+ $module = $asm.GetModules <<<< ()[0]
    + CategoryInfo          : InvalidOperation: (GetModules:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull
 
No se puede llamar a un método en una expresión con valor NULL.
En línea: 5 Carácter: 42
+ $decryptionMethod = $module.ResolveMethod <<<< ($MetadataToken)
    + CategoryInfo          : InvalidOperation: (ResolveMethod:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull
 
No se puede llamar a un método en una expresión con valor NULL.
En línea: 6 Carácter: 35
+ $result = $decryptionMethod.Invoke <<<< ($null,80)
    + CategoryInfo          : InvalidOperation: (Invoke:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull
 
¿Alguien puede ayudarme? please.
Ya no sé qué más probar y estoy muy perdido en .NET.
16  Programación / Ingeniería Inversa / Re: Añadir entrada en la iat en: 23 Marzo 2017, 23:16 pm
El caso es que es un armadillo desempacado con ArmaGeddon pero hay protecciones que no las quita y esta es que armadillo obtiene las direcciones es a esas apis en ejecución y por tanto es desempacado no las tendrá. Teniendo el listado de todas pues es cuestión de añadir las que no estén porque solo he visto una que le pasa pero no se si habría alguna más. Lo he reparado con importrec pero hay que añadir una sección porque no me deja si no es así.
17  Programación / Ingeniería Inversa / Añadir entrada en la iat en: 23 Marzo 2017, 16:50 pm
Hola amigos, se que para reparar la iat se usa importrec pero el caso es que solo necesito añadir una sola dirección que no está en ella y me gustaría saber el procedimiento para añadir una entrada sin necesidad de crear una nueva sección ni tener que usar otra zona de memoria como se podría hacer con importrec. ¿es muy complejo añadir a mano una entrada? ¿o se sale de madre? ¿algún tutorial que lo explique?
18  Programación / Programación C/C++ / Re: Menú con funciones en C++ en: 10 Marzo 2017, 18:10 pm
Tiene bastantes problemas estructurales. Te paso el codigo con algunas correcciones:
Código:
#include <iostream>
#include <stdlib.h>
#include <windows.h>
 
using namespace std;
 
void guardar(int tam, string arr[]){
    char res;
    cout << "Al guardar se perderan los datos anteriores, desea continuar s/n: " << endl;
    cin>>res;
    res=toupper(res);

    if(res=='S'){
        for(int i=0;i<tam; i++){
            if(arr[i]==""){
                cout<<"Ingrese valor para la posicion " << i << " del arreglo"<< endl;
                cin>>arr[i];
            }
        }
    }
}

void ver(int tam, string arr[]){
    for(int i=0; i<tam;i++){
        if(arr[i]!=""){
            cout<<i<<" "<< arr[i] << endl;
        }else{
            cout<<i<<" vacio"<<endl;
        }
    }
}

//Esto es porque si pides un numero y se introduce por ejemplo una letra...
//Pruebalo sin esto y veras que gracioso
int GetIndex(int tam){
    bool error;
    int del;
    string aux;

    do{
        cin>>aux;
        error=false;
        for(int i=0;i<aux.length();i++){
            if(!isdigit(aux[i])){
                error=true;
                break;
            }
        }
        if(!error){
            del=atoi(aux.c_str());
            if(del > tam || del < 0){
                error=true;
             }
        }
        if(error)
            cout<<"Numero incorrecto."<<endl<<"Vuelve a intentarlo: ";
    }while(error);

    return del;
}

void borrar(int tam,string arr[]){
    int del;

    for(int i=0;i<tam;i++){
        cout<<i<<" "<<arr[i]<<endl;
    }
    cout << "Que numero de entrada desea borrar: "<< endl;

    del=GetIndex(tam);

    if(arr[del]==""){
        cout<<"Registro vacio"<<endl;
    }else{
        arr[del]="";
        cout<<"Registro Borrado"<<endl;
    }
}

void buscar(int tam,string arr[]){
    string bus;
    bool encontrado=false;

    cout<<"Introduzca el codigo a buscar: ";
    cin>>bus;

    for(int i=0;i<tam;i++){
        if(arr[i]==bus){
            cout<<arr[i] << " encontrado en la posicion " << i << endl;
            encontrado=true;
        }
    }
    if(!encontrado)
        cout<<"Codigo no encontrado"<<endl;
}

int menu(int tam, string arr[]){
    char ent;
    cout << "Eliga la accion que quiera realizar:" << endl << "A.- Guardar" << endl << "B.- Ver" << endl << "C.- Buscar" << endl << "D.- Borrar" << endl << "E.- Salir" << endl;
    cout<<"Introduzca una opcion: ";
    do{
        cin >> ent;
        ent=toupper(ent);
        if(ent<'A' || ent>'E')
            cout << "Entrada no valida" << endl << "Intente de nuevo: ";
    }while(ent<'A' || ent>'E');

    switch(ent){
        case 'A':
            system("cls");
            guardar(tam,arr);
            system("pause");
            break;
        case 'B':
            system("cls");
            ver(tam,arr);
            system("pause");
            break;
        case 'C':
            system("cls");
            buscar(tam,arr);
            system("pause");
            break;
        case 'D':
            system("cls");
            borrar(tam,arr);
            system("pause");
            break;
        case 'E':
            break;
    }
    system("cls");
    return ent;
}

int main(){
    const int tam=15;
    int op;
    string arr[tam];

    for(int i=0;i<tam;i++)
        arr[i]="";
    do{
        op=menu(tam,arr);
    }while(op!='E');
}
19  Sistemas Operativos / Windows / Re: Problemas con KMS Auto Net y Office pro plus 2016 en: 7 Marzo 2017, 08:05 am
Con lo del enlace que puse se solucionó.
20  Sistemas Operativos / Windows / Re: Problemas con KMS Auto Net y Office pro plus 2016 en: 4 Marzo 2017, 09:17 am
Sí y al parecer no es problema de este. Preguntando por un chat me han dado lo que parece la solución correcta aunque aún no lo he probado.
Aquí el enlace: https://support.microsoft.com/es-es/help/3170450/repeated-activation-prompts-occur-after-installing-volume-license-version-of-2016
Yo desinstalé el office 365 x86 que venia preinstalado y luego instalé el pro plus 2016. Lo de instalar sin haber desinstalado previamente el oem... no creo que lo hiciera porque ni siquiera se que es el oem jejeje. No se si tengo que desinstalarlo ahora o como proceder exactamente.
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines