Domanda

Ho una piccola utility originariamente scritta in VS2005.

Devo fare una piccola modifica, ma il codice sorgente di una delle DLL è stato perso da qualche parte.

Esiste uno strumento gratuito oa prezzi ragionevoli per decodificare la dll in codice C ++.

È stato utile?

Soluzione

Decompiler Hex-Rays è un ottimo strumento, ma il codice sarà piuttosto difficile per leggere e dovrai dedicare molto tempo a decodificare l'intera DLL.

Altri suggerimenti

Potresti anche dare un'occhiata a OllyDbg che è un debugger che analizza a livello di assemblatore a 32 bit. Viene utilizzato per analizzare il codice binario in scenari in cui non si dispone di un codice sorgente. È un debugger leggero. OllyDbg è uno shareware che puoi scaricare & amp; usalo gratuitamente .. !!

Visita OllyDbg è la home page qui

PS: in passato i cracker utilizzavano SoftICE da NuMega per il debug in un eseguibile & amp; acquisire un'istantanea dei valori dei registri. SoftICE era un debugger avanzato. Era sicuramente lo strumento preferito per i cracker. Non conosco lo stato attuale del prodotto. Il sito di NuMega non aveva informazioni al riguardo. Potrei averlo trascurato ma non sono riuscito a trovarlo. Ti consiglio di mettere le mani su una versione legacy (4.0x) di SoftICE & amp; applica la patch WindowsXP per SoftICE. Lavorare con SoftICE è qualcosa di "esperienza".

Ulteriori informazioni: Inversione: i segreti dell'ingegneria inversa di Eldad Eilam

Non conosco la situazione esatta che hai e quanto la funzionalità implementa la DLL per la tua applicazione. Ma direi che nella maggior parte dei casi sarebbe meglio riscrivere la DLL mancante in base alla funzionalità nota.

Questo è particolarmente vero se hai della documentazione per questo.

Cercare di decodificare il codice binario in assembler, quindi in C ++ e quindi provare a modificarlo per fornire la funzionalità esistente sarà nella maggior parte dei casi dispendioso in termini di tempo e forse addirittura impossibile.

Se la tua piccola modifica è modificare del testo o saltare alcune routine, potresti usare un editor esadecimale o un disassemblatore, ma non sarai in grado di vedere il codice C ++ originale e anche se trovi uno strumento che trasforma la DLL in codice, tutti i nomi delle variabili sparirebbero e sarebbe un gran casino.

A seconda della tua situazione, manterrei la DLL legacy / binaria così com'è e scriverei una DLL wrapper che cambierà e / o aggiungerà qualsiasi comportamento aggiuntivo.

L'idea è di aggregare la vecchia funzionalità in una nuova DLL che importa quella vecchia.

Devi farlo come fanno i cracker di giochi e app: usa un disassemblatore e modifica il codice dell'Assemblea.

Non puoi riportare la carne su un animale e anche se potessi avresti un animale morto: P

SE è stato fatto in .NET, allora perché non usare il DotNet Reflector.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top