{"id":4131,"date":"2016-06-06T13:55:23","date_gmt":"2016-06-06T05:55:23","guid":{"rendered":"https:\/\/www.darknet.org.uk\/?p=4131"},"modified":"2016-06-06T13:55:38","modified_gmt":"2016-06-06T05:55:38","slug":"movfuscator-compile-program-mov-instructions","status":"publish","type":"post","link":"https:\/\/www.darknet.org.uk\/2016\/06\/movfuscator-compile-program-mov-instructions\/","title":{"rendered":"movfuscator – Compile Into ONLY mov Instructions"},"content":{"rendered":"

The M\/o\/Vfuscator (short ‘o’, sounds like “mobfuscator”) helps programs compile into only mov instructions, and nothing else – no cheating. 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.<\/p>\n

\"movfuscator<\/p>\n

The compiler currently targets the C programming language and x86 processor architecture, but is easily adaptable to other languages and architectures.<\/p>\n

Usage<\/h3>\n
--mov-id\r\n  Add reference instructions for each basic block to assist debugging.\r\n\r\n--no-mov-id\r\n  Do not add reference instructions.  This is the default.\r\n\r\n--mov-flow\r\n  Use mov instructions in implementing control flow.  This is the default.\r\n\r\n--no-mov-flow\r\n  Use jmp instructions in implementing control flow.  This will substantially\r\n  speed up execution in larger projects.\r\n\r\n--mov-extern\r\n  Use mov instructions to implement external function calls.  This is the\r\n  default.\r\n\r\n--no-mov-extern\r\n  Use jmp instructions to implement external function calls.  This is useful for\r\n  debugging.\r\n\r\n--mov-loop\r\n  Use mov instructions to implement the primary execution loop.  This is the\r\n  default.\r\n\r\n--no-mov-loop\r\n  Use jmp instructions to implement the primary execution loop.  This is useful\r\n  for debugging.\r\n\r\n--crt0\r\n  Build the M\/o\/Vfuscator crt0 library (_start routines).\r\n\r\n--crtf\r\n  Build the M\/o\/Vfuscator crtf library (primary execution loop routines).\r\n\r\n--crtd\r\n  Build the M\/o\/Vfuscator crtd library (data tables).\r\n\r\n--crt\r\n  Same as --crt0 --crtf --crtd.<\/pre>\n

The inspiration for the compiler is the paper “mov is Turing-complete<\/a>“, by Stephen Dolan.<\/p>\n

You can download M\/o\/Vfuscator2 here:<\/p>\n

movfuscator-master.zip<\/a><\/p>\n

Or read more here<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"

The M\/o\/Vfuscator (short ‘o’, sounds like “mobfuscator”) helps programs compile into only mov instructions, and nothing else – no cheating. 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 compiler currently […]<\/p>\n","protected":false},"author":25,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"","_seopress_titles_desc":"The M\/o\/Vfuscator (short 'o', sounds like \"mobfuscator\") helps programs compile into only mov instructions, and nothing else - no cheating.","_seopress_robots_index":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[7,29],"tags":[],"featured_image_src":null,"featured_image_src_square":null,"author_info":{"display_name":"Darknet","author_link":"https:\/\/www.darknet.org.uk\/author\/darknet\/"},"_links":{"self":[{"href":"https:\/\/www.darknet.org.uk\/wp-json\/wp\/v2\/posts\/4131"}],"collection":[{"href":"https:\/\/www.darknet.org.uk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.darknet.org.uk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.darknet.org.uk\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/www.darknet.org.uk\/wp-json\/wp\/v2\/comments?post=4131"}],"version-history":[{"count":0,"href":"https:\/\/www.darknet.org.uk\/wp-json\/wp\/v2\/posts\/4131\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.darknet.org.uk\/wp-json\/wp\/v2\/media?parent=4131"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.darknet.org.uk\/wp-json\/wp\/v2\/categories?post=4131"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.darknet.org.uk\/wp-json\/wp\/v2\/tags?post=4131"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}