Zoom Icon

Reverse Dxtory

From UIC Archive

Revision as of 12:56, 25 February 2012 by Pnuic (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

When managed-code based attacks arent' enough, that is to say let's reverse DxTory

Contents


Reverse Dxtory
Author: Tonyweb
Email: Email
Website: Home page
Date: 25/02/2012 (dd/mm/yyyy)
Level: Slightly hard
Language: English Flag English.gif
Comments:



Introduction

It's been a while since reversing of .NET applications began. I still remember the first tutorials on the subject and the first targets for which changing a few bytes with an hex editor was enough to fully remove the restrictions from. So much has changed: developers of both software and protections made the reversing process increasingly complex and time-consuming; however, from the reverse engineering side, capable and willing individuals wrote increasingly powerful tools that allow us to continue focusing on those few bytes to patch. ?

Occasionally, however, Reflector decompiled code allows us to remove only a portion of the limitations targets we are working on exhibit, and we are therefore forced to get our hands dirty with native code to complete our mission. One of these programs is Dxtory, which is currently at version 2.0.110.



Tools & Files

  • RedGate Reflector and its Reflexil plugin (at v.1.3 at the time of writing)
  • De4Dot to deobfuscate our .NET executable
  • CFF Explorer
  • Your favorite hex editor (I’ll use the free HxD editor)
  • Mono.Cecil and Public Key Injector (should be attached to this tutorial)
  • Reter Decompiler
  • OllyDbg 1.10 with Multimate Assembler plugin
  • A DDS image viewer (optional, I used IrfanView version 4.25)
  • A small Direct-X app which you can test the program onto. I found a nice and tiny one, FractalDemo.exe, here
  • A brain in working order, as usual ;)


Target

Dxtory is basically a program that lets you take snapshots or video clips from Direct-X applications, primarily games, even at full screen mode. Allegedly, unlike other applications with the same purpose, it doesn’t slow down the gameplay experience and therefore it guarantees better performances and results.



Essay

PDF: English or Italian


Final Notes

First of all I must say thank you to lena151: if it were not for her amazing tutorials I would never entered the world of reverse engineering. You're great Lena!

A warm greeting to the friends of UIC (quequero, sparpacillon, PnUic, Quake, phobos, tonymhz, ecc.), to [email protected] team and forum guys (Kurapica, whoknows, revert, 0xd4d, romero, yck1509, kao, bball0002, CodeCracker, ecc., the .NET gurus), to ARTeam crew (Nacho_Dj, Shub Nigurrath, Ghandi, Nieylana SunBeam, deroko, …) and to all people I “encounter” everyday browsing tuts4you, eXeTools, Appznet, ecc. boards … eventually I’ll end up forgetting someone :D

Greetings to JeRRy (SnD) who was the first one who asked me a mini-tut for the previous revision of this target … I’m a bit late, I know, but better late than never, right? :P Special thanks to sparpacillon who often wastes quite a bit of his free time chatting with me about reversing; he also accepted to read and make readable this tutorial’s beta version … thanks again mate!. A thank you also to Mr.eXoDia who made me enter the Armadillo Keygenning world: he shared with me what he knew and had discovered.

Thank you also to all the friends at the SnD Requester Board; wihtout a specific order: Baxter, quosego, willie, deepzero, Snake, Vepergen, apuromafo, MasterUploader, qpt, JohnWho, PeterPunk, Silence, DisArm (a real pity he decided to leave the board), … even here I forgot someone for sure, don’t hate me for that. In conclusion, I thank all the persons I can, luckily for me, call friends: thank you all for your continued support and motivation that helps me advance, in small steps unfortunately, at/in our wonderful hobby.

Finally, thanks to all of you who had the guts to reach the last page of this tutorial :P

Tonyweb


Disclaimer

I documenti qui pubblicati sono da considerarsi pubblici e liberamente distribuibili, a patto che se ne citi la fonte di provenienza. Tutti i documenti presenti su queste pagine sono stati scritti esclusivamente a scopo di ricerca, nessuna di queste analisi è stata fatta per fini commerciali, o dietro alcun tipo di compenso. I documenti pubblicati presentano delle analisi puramente teoriche della struttura di un programma, in nessun caso il software è stato realmente disassemblato o modificato; ogni corrispondenza presente tra i documenti pubblicati e le istruzioni del software oggetto dell'analisi, è da ritenersi puramente casuale. Tutti i documenti vengono inviati in forma anonima ed automaticamente pubblicati, i diritti di tali opere appartengono esclusivamente al firmatario del documento (se presente), in nessun caso il gestore di questo sito, o del server su cui risiede, può essere ritenuto responsabile dei contenuti qui presenti, oltretutto il gestore del sito non è in grado di risalire all'identità del mittente dei documenti. Tutti i documenti ed i file di questo sito non presentano alcun tipo di garanzia, pertanto ne è sconsigliata a tutti la lettura o l'esecuzione, lo staff non si assume alcuna responsabilità per quanto riguarda l'uso improprio di tali documenti e/o file, è doveroso aggiungere che ogni riferimento a fatti cose o persone è da considerarsi PURAMENTE casuale. Tutti coloro che potrebbero ritenersi moralmente offesi dai contenuti di queste pagine, sono tenuti ad uscire immediatamente da questo sito.

Vogliamo inoltre ricordare che il Reverse Engineering è uno strumento tecnologico di grande potenza ed importanza, senza di esso non sarebbe possibile creare antivirus, scoprire funzioni malevole e non dichiarate all'interno di un programma di pubblico utilizzo. Non sarebbe possibile scoprire, in assenza di un sistema sicuro per il controllo dell'integrità, se il "tal" programma è realmente quello che l'utente ha scelto di installare ed eseguire, né sarebbe possibile continuare lo sviluppo di quei programmi (o l'utilizzo di quelle periferiche) ritenuti obsoleti e non più supportati dalle fonti ufficiali.