Exetools  

Go Back   Exetools > General > General Discussion

Notices

Reply
 
Thread Tools Display Modes
  #1  
Old 12-05-2016, 07:09
chants chants is offline
VIP
 
Join Date: Jul 2016
Posts: 738
Rept. Given: 37
Rept. Rcvd 48 Times in 30 Posts
Thanks Given: 671
Thanks Rcvd at 1,064 Times in 482 Posts
chants Reputation: 48
Decompiling the mov compiler

Has anyone a resource for unobfuscating and hence making decompilation practical for the output of the movfuscator?

Quote:
https://github.com/xoreaxeaxeax/movfuscator
Quote:
The M/o/Vfuscator (short 'o', sounds like "mobfuscator") compiles programs into "mov" instructions, and only "mov" instructions. Arithmetic, comparisons, jumps, function calls, and everything else a program needs are all performed through mov operations; there is no self-modifying code, no transport-triggered calculation, and no other form of non-mov cheating.
The basic effects of the process can be seen in overview, which illustates compiling a simple prime number function with gcc and the M/o/Vfuscator.
Inspired by "mov is Turing-complete" by Stephen Dolan

Quote:
Finding Turing-completeness in unlikely places has long been a pastime of bored computer scientists.
Quote:
Removing all but the mov instruction from future iterations of the x86 architecture would have many advantages: the instruction format would be greatly simplified, the expensive decode unit would become much cheaper, and silicon currently used for complex functional units could be repurposed as even more cache. As long as someone else implements the compiler.


Quote:
http://www.cl.cam.ac.uk/~sd601/papers/mov.pdf
It is an interesting topic since it looks like obfuscation is ahead of deobfuscation and quite significantly given this and other AES based schemes out there.
Reply With Quote
  #2  
Old 12-05-2016, 08:11
mr.exodia mr.exodia is offline
Retired Moderator
 
Join Date: Nov 2011
Posts: 784
Rept. Given: 492
Rept. Rcvd 1,122 Times in 305 Posts
Thanks Given: 90
Thanks Rcvd at 711 Times in 333 Posts
mr.exodia Reputation: 1100-1299 mr.exodia Reputation: 1100-1299 mr.exodia Reputation: 1100-1299 mr.exodia Reputation: 1100-1299 mr.exodia Reputation: 1100-1299 mr.exodia Reputation: 1100-1299 mr.exodia Reputation: 1100-1299 mr.exodia Reputation: 1100-1299 mr.exodia Reputation: 1100-1299
Most likely it has to do with the fact that writing obfuscators is very profitable and writing deobfuscators is a huge chore and not very profitable at all, especially to release in public.
Reply With Quote
The Following User Says Thank You to mr.exodia For This Useful Post:
chants (12-07-2016)
  #3  
Old 12-08-2016, 08:53
t3xc0d3 t3xc0d3 is offline
Friend
 
Join Date: Oct 2016
Posts: 9
Rept. Given: 0
Rept. Rcvd 4 Times in 3 Posts
Thanks Given: 0
Thanks Rcvd at 24 Times in 9 Posts
t3xc0d3 Reputation: 4
The movfuscator and its variations are mostly broken. For instance, have a look at this talk:

description: https://recon.cx/2016/talks/%22Movfuscator-Be-Gone.html
video: https://www.youtube.com/watch?v=d_R8i0dVBsQ
code: https://github.com/kirschju/demovfuscator
thesis/writeup: https://kirschju.re/static/ba_jonischkeit_2016.pdf

Others have broken the movfucator earlier: https://twitter.com/tathanhdinh/status/634165703558434816

Symbolic execution is also quite successful on these kind of obfuscations. If you mix it with some taint analysis, there should not be much left. For a great work for generic obfuscation have a look at https://www.cs.arizona.edu/people/debray/Publications/generic-deobf.pdf .

Last edited by t3xc0d3; 12-08-2016 at 18:28.
Reply With Quote
The Following User Gave Reputation+1 to t3xc0d3 For This Useful Post:
niculaita (12-10-2016)
The Following 3 Users Say Thank You to t3xc0d3 For This Useful Post:
chants (12-08-2016), niculaita (12-10-2016), tonyweb (12-08-2016)
  #4  
Old 12-08-2016, 21:16
Hyper-V Hyper-V is offline
Guest
 
Join Date: Nov 2016
Posts: 2
Rept. Given: 0
Rept. Rcvd 0 Times in 0 Posts
Thanks Given: 0
Thanks Rcvd at 0 Times in 0 Posts
Hyper-V Reputation: 0
The thing about these kind of obfuscators is that:

1. Approaching a MoV'd binary *knowing* that it has been movfuscated makes it really easy, because you already know what are you dealing with, and on top of that, you have the source of the obfuscator - you don't have to spend a bunch of days reversing it, just to get the idea of the obfuscation because you already know it.
2. The obfuscation is not intelligent, but rather, it's almost a translation of instructions. If it can be done in one way, it can be done in the another, right? Even more so if the source is public and all you have to do is see how it works.
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Who are familiar with decompiling? DMichael General Discussion 3 08-09-2013 01:04
VB3 decompiling wasq General Discussion 23 05-23-2005 02:30
decompiling back to C++? Rhodium General Discussion 44 10-11-2004 08:30


All times are GMT +8. The time now is 10:14.


Always Your Best Friend: Aaron, JMI, ahmadmansoor, ZeNiX, chessgod101
( 1998 - 2024 )