M/o/Vfuscator: A single instruction C compiler
1–10 of 30 posts
Re: M/o/Vfuscator: A single instruction C compiler
#2Re: M/o/Vfuscator: A single instruction C compiler
#3Is there no actual flow control but instead conditional manipulation (MOVs) of values?
Re: M/o/Vfuscator: A single instruction C compiler
#4Branching with only MOV? How does that work? Is there no actual flow control but instead conditional manipulation (MOVs) of values?
> mov eax, [base + eax*4]
You load 1 address if eax is 0 and a different on if it’s 1. There’s also a jump instruction so you can implement a conditional jump through mov.
This is based on the Stephen Dolan paper: https://harrisonwl.github.io/assets/courses/malware/spring20...
Re: M/o/Vfuscator: A single instruction C compiler
#5Branching with only MOV? How does that work? Is there no actual flow control but instead conditional manipulation (MOVs) of values?
Re: M/o/Vfuscator: A single instruction C compiler
#6Re: M/o/Vfuscator: A single instruction C compiler
#7And if you're on a 64-bit system, you'll want to make sure it finds the 32-bit libc and libm binaries (see [1]). On Arch, the following worked for me:
./build/movcc -L/usr/lib32 test.c
[0]: https://github.com/xoreaxeaxeax/movfuscatorRe: M/o/Vfuscator: A single instruction C compiler
#8Re: M/o/Vfuscator: A single instruction C compiler
#9Previous discussion: May 19, 2021 - https://news.ycombinator.com/item?id=27202801 (40 comments)
discussion (2013) https://news.ycombinator.com/item?id=6309631
[While I concur that x86 MOV is impressively powerful, it is also well-known that simple NAND gates can be combined to compute arbitrary logic functions. There are also many simple single instruction/operation CPU designs.]
Re: M/o/Vfuscator: A single instruction C compiler
#10Branching with only MOV? How does that work? Is there no actual flow control but instead conditional manipulation (MOVs) of values?