加密软件VMProtect教程:使用脚本Mach-O文件

news2024/11/18 5:45:55

VMProtect是新一代软件保护实用程序。VMProtect支持德尔菲、Borland C Builder、Visual C/C++、Visual Basic(本机)、Virtual Pascal和XCode编译器。

同时,VMProtect有一个内置的反汇编程序,可以与Windows和Mac OS X可执行文件一起使用,并且还可以链接编译器创建的MAP文件,以快速选择要保护的代码片段。

为了轻松实现应用程序保护任务的自动化,VMProtect实现了内置脚本语言。VMProtect完全支持Windows系列的32/64位操作系统(从Windows 2000开始)和Mac OSX(从版本10.6开始)。重要的是,无论目标平台如何,VMProtect都支持所有范围的可执行文件,即Windows版本可以处理Mac OS X版本的文件,反之亦然。

VMProtect最新版下载(qun:766135708)icon-default.png?t=N7T8https://www.evget.com/product/1859/download

常量,以配合Mach-O格式:

enum MacFormat {  	// Load Command Types  	LC_SEGMENT,  	LC_SYMTAB,  	LC_SYMSEG,  	LC_THREAD,  	LC_UNIXTHREAD,  	LC_LOADFVMLIB,  	LC_IDFVMLIB,  	LC_IDENT,  	LC_FVMFILE,  	LC_PREPAGE,  	LC_DYSYMTAB,  	LC_LOAD_DYLIB,  	LC_ID_DYLIB,  	LC_LOAD_DYLINKER,  	LC_PREBOUND_DYLIB,  	LC_ROUTINES,  	LC_SUB_FRAMEWORK,  	LC_SUB_UMBRELLA,  	LC_SUB_CLIENT,  	LC_SUB_LIBRARY,  	LC_TWOLEVEL_HINTS,  	LC_PREBIND_CKSUM,  	LC_LOAD_WEAK_DYLIB,  	LC_SEGMENT_64,  	LC_ROUTINES_64,  	LC_UUID,  	LC_RPATH,  	LC_CODE_SIGNATURE,  	LC_SEGMENT_SPLIT_INFO,  	LC_REEXPORT_DYLIB,  	LC_LAZY_LOAD_DYLIB,  	LC_ENCRYPTION_INFO,  	LC_DYLD_INFO,  	LC_DYLD_INFO_ONLY,  	LC_LOAD_UPWARD_DYLIB,  	LC_VERSION_MIN_MACOSX,  	// Section Types	  	SECTION_TYPE,  	SECTION_ATTRIBUTES,  	S_REGULAR,  	S_ZEROFILL,  	S_CSTRING_LITERALS,  	S_4BYTE_LITERALS,  	S_8BYTE_LITERALS,  	S_LITERAL_POINTERS,  	S_NON_LAZY_SYMBOL_POINTERS,  	S_LAZY_SYMBOL_POINTERS,  	S_SYMBOL_STUBS,  	S_MOD_INIT_FUNC_POINTERS,  	S_MOD_TERM_FUNC_POINTERS,  	S_COALESCED,  	S_GB_ZEROFILL,  	S_INTERPOSING,  	S_16BYTE_LITERALS,  	S_DTRACE_DOF,  	S_LAZY_DYLIB_SYMBOL_POINTERS,  	SECTION_ATTRIBUTES_USR,  	S_ATTR_PURE_INSTRUCTIONS,  	S_ATTR_NO_TOC,  	S_ATTR_STRIP_STATIC_SYMS,  	S_ATTR_NO_DEAD_STRIP,  	S_ATTR_LIVE_SUPPORT,  	S_ATTR_SELF_MODIFYING_CODE,  	S_ATTR_DEBUG,  	SECTION_ATTRIBUTES_SYS,  	S_ATTR_SOME_INSTRUCTIONS,  	S_ATTR_EXT_RELOC,  	S_ATTR_LOC_RELOC  };

一个处理Mach-O文件的课程:

class MacFile {  public:  	string name(); // returns the name of the file  	string format(); // returns the name of the "Mach-O" format  	uint64 size(); // returns the size of the file  	int count(); // returns the number of architectures in the list  	MacArchitecture item(int index); // returns an architecture with the given index  	uint64 seek(uint64 offset); // sets the file position  	uint64 tell(); // returns the file position  	int write(string buffer); // writes a buffer to the file  };

一个使用Mach-O架构的课程:

class MacArchitecture {  public:  	string name(); // returns the name of the architecture  	MacFile file(); // returns the parent file  	uint64 entryPoint(); // returns the starting address  	OperandSize cpuAddressSize(); // returns bit count of the architecture  	uint64 size(); // returns the size of the architecture  	MacSegments segments(); // returns the list of segments  	MacSections sections(); // returns the list of sections  	MacCommands commands(); // returns the list of load commands  	MacSymbols symbols(); // returns the list of symbols  	MacImports imports(); // returns the list of imported libraries  	MacExports exports(); // returns the list of exported functions  	MacFixups fixups(); // returns the list of fixups (relocations)  	MapFunctions mapFunctions(); // returns the list of functions available for protection  	IntelFunctions functions(); // returns the list of protected functions  	bool addressSeek(uint64 address); // sets the file position  	uint64 seek(uint64 offset); // sets the file position  	uint64 tell(); // returns the file position  	int write(string buffer); // writes a buffer to the file  };

一个用于处理Mach-O结构段列表的类:

class MacSegments {  public:  	MacSegment item(int index); // returns a segment with the given index  	int count(); // returns the number of segments in the list  	MacSegment itemByAddress(); // returns a segment at the given address  };

一个与Mach-O架构段合作的课程:

class MacSegment {  public:  	uint64 address(); // returns the address of the segment  	string name(); // returns the name of the segment  	uint64 size(); // returns the size of the segment  	int physicalOffset(); // returns the file position of the segment  	int physicalSize(); // returns the file size of the segment  	int flags(); // returns flags of the segment  	bool excludedFromPacking(); // returns the "Excluded from packing" property  };

一个处理Mach-O架构部分列表的类:

class MacSections {  public:  	MacSection item(int index); // returns a section with the given index  	int count(); // returns the number of sections in the list  	MacSection itemByAddress(uint64 address); // returns a section at the given address  };

一个与Mach-O架构部分合作的类:

class MacCommands {  public:  	MacCommand item(int index); // returns a command with the given index  	int count(); // returns the number of command in the list  	MacCommand itemByType(int type); // returns a command of the given type  };

一个用于处理Mach-O架构加载命令列表的类:

class MacCommand {  public:  	uint64 address(); // returns the address of the command  	int type(); // returns the type of the command  	string name(); // returns the name of the command  	int size(); // returns the size of the command  };

一个处理Mach-O架构符号列表的类:

class MacSymbols {  public:  	MacSymbol item(int index); // returns a symbol with the given index  	int count(); // returns the number of symbols in the list  };

一个使用马赫-O架构符号的类:

class MacSymbol {  public:  	uint64 value(); // returns the value of the symbol  	string name(); // returns the name of the symbol  };

一个用于处理Mach-O架构的导入库列表的类:

class MacImports {  public:  	MacImport item(int index); // returns an imported library with the given index  	int count(); // returns the number of imported libraries in the list  	MacImport itemByName(string name); // returns an imported library with the given name  };

一个与Mach-O架构的导入库一起工作的类:

class MacImport {  public:  	string name(); // returns the name of the imported library  	MacImportFunction item(int index); // returns an imported function with the given index  	int count(); // returns the number of imported functions in the list  	void setName(string name); // sets the name of the imported library  };

一个使用Mach-O架构导入函数的类:

class MacImportFunction {  public:  	uint64 address(); // returns the memory address where the address of the imported function is stored  	string name(); // returns the name of the imported function  };

一个用于处理Mach-O架构的导出函数列表的类:

class MacExports {  public:  	string name(); // returns the name of the library  	MacExport item(); // returns an exported function with the given index  	int count(); // returns the number of exported functions in the list  	void clear(); // clears the list  	MacExport itemByAddress(uint64 address); // returns an exported function at the given address  	MacExport itemByName(string name); // returns an exported function with the given name  };

一个与Mach-O架构导出的函数一起工作的类:

class MacExport {  public:  	uint64 address(); // returns the address of the exported function  	string name(); // returns the name of the exported function  	string forwardedName(); // returns the name of the function the exported function is forwarded to  	void destroy(); // destroys the exported function  };

一个用于处理Mach-O架构的修复(重新定位)列表的类:

class MacFixups {  public:  	MacFixup item(int index); // returns an element with the given index  	int count(); // returns the number of elements in the list  	MacFixup itemByAddress(uint64 address); // returns an element at the given address  };

一个与Mach-O架构固定工作的类:

class MacFixup { public: uint64 address(); // returns the address of the element };

获取完整>>>vmprotect 中文支持手册

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1548219.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

怎么制作iOS证书

首先我们登录appuploder官网 搜索 appuploder 第一个就是我们官网啦,网址是:Appuploader home -- A tool improve ios develop efficiency such as submit ipa to appstore and manage ios certificate 可以跨平台开发,无论是Windows还是Ma…

前端面试题---->JavaScript

const声明的对象属性和数组的值可以被修改吗?为什么 原因:当使用const声明一个对象或数组时,实际上是保证了对象或数组的引用不会被修改,但对象或数组本身的属性或元素是可以被修改的。这是因为const只能保证指向的内存地址不变&a…

搭载前净柔泉女冲技术的科勒马桶盖,你的家中必备

近几年智能家居逐渐成为众多家庭的首选,尤其是智能马桶已经逐渐变成家中必备,但智能马桶动辄几千上万的价格让很多家庭望而却步,于是智能马桶盖应运而生。科勒清舒宝智能便盖不仅可以适配市面上大多数马桶,而且功能丰富&#xff0…

基于springboot+vue调用百度ai实现车牌号识别功能

百度车牌号识别官方文档 结果视频演示 后端代码 private String getCarNumber(String imagePath, int count) {// 请求urlString url "https://aip.baidubce.com/rest/2.0/ocr/v1/license_plate";try {byte[] imgData FileUtil.readFileByBytes(imagePath);Stri…

精酿啤酒:多阶段发酵工艺的特点与优势

Fendi Club啤酒采用多阶段发酵工艺,这种工艺在啤酒酿造中具有显著的特点和优势。 首先,多阶段发酵工艺是一种复杂的酿造过程,它包括多个阶段的发酵和陈化过程。这种工艺需要切确控制每个阶段的时间、温度和酵母种类等参数,以确保…

【揭秘】企讯通106短信通知:那些你不可不知的“幕后功臣”

在日常生活中,你是否留意过那些来自“106”开头的短信?它们悄无声息地出现在你的手机收件箱,为你带来账单提醒、验证码、优惠活动等各类重要信息。看似平淡无奇的“106短信通知”,实则蕴含着丰富的科技力量与智慧结晶。今天&#…

together.ai简介

Together AI Solutions | Fastest Tools for Building Private Models for Enterprise Quickstart

【linux深入剖析】基础IO操作 | 使用Linux库函数实现读写操作 | 文件相关系统调用接口

🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 前言1.复习C文件IO相关操…

设计模式深度解析:深入浅出的揭秘游标尺模式与迭代器模式的神秘面纱 ✨

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,坚持默默的做事。 深入浅出的揭秘游标尺模式与迭代器模式的神秘面纱 开篇: 欢迎来到设计模式的神秘…

如何在数字化转型中确保数据安全

随着科技的飞速发展,数字化转型已成为企业发展的必然趋势。数字化转型是指企业利用数字技术对业务流程、组织结构和商业模式进行全面创新和变革,以提高企业的竞争力和创新能力。然而,在数字化转型过程中,数据安全问题日益凸显&…

胖东来:超越零售巨头山姆和Costco的秘密武器

在零售业的江湖中,胖东来这个名字正在悄然崭露头角。3月26日,胖东来创始人于东来豪言壮志地表示,未来3-5年内,他的目标是超越零售巨头山姆和Costco。这不仅仅是一个口号,而是胖东来凭借自身实力,逐步迈向更…

为什么requests不是python标准库?

在知乎上看到有人问:为什么requests不是python标准库? 这确实是部分人困惑的问题,requests作为python最受欢迎的http请求库,已经成为爬虫必备利器,为什么不把requests直接装到python标准库里呢?可以省去第…

什么是公网IP?

公网IP,即公开网络IP地址,是指在互联网中公开可见、可访问的IP地址。每个设备在连接互联网时,都需要一个唯一的公网IP地址,以便其他设备可以定位并与之通信。 尽管公网IP在网络通信中具有重要作用,但它也带来了一些安全…

扫码登录到底是怎么实现的?

扫码登录的原理,其实很简单。 扫码登录的本质是,通过已经登录过的 App 应用,扫描未登录的 Web 端程序中的二维 码, 通过某种机制触发登录凭证的写入从而实现 Web 端自动登录的过程。 1、首先,在网页端打开登录页面&…

低功耗电子方案开发定制

低功耗电子方案开发定制 东莞市酷得智能科技有限公司是一家专注于为客户提供高质量解决方案的创新型科技公司。成立于2018年,我们的使命是通过技术创新和卓越的服务,帮助客户实现业务目标和价值最大化。 作为一家小而精悍的公司,我们拥有一支…

QML | JavaScript作用域和命名解析2

QML | JavaScript作用域和命名解析3.绑定的作用域对象 属性绑定是QML中最常见的JavaScript应用。属性绑定关联了一个JavaScript表达式的结果和对象的一个属性,该属性所归属的对象被称为绑定的作用域对象。在下面的代码中,Item对象就是一个绑定的作用域对象: ​ 绑定可以…

uniapp流浪动物救助小程序Java宠物领养小程序springboot

uniapp流浪动物救助小程序Java宠物领养小程序springboot 代码40块,需要的私聊 前台基于uniapp小程序 后台管理基于springbootvue前后端分离项目 开发语言:Java 框架:springboot vue JDK版本:JDK1.8(或11&#xf…

张宇1000题要刷崩溃了值不值得坚持做?

可以做1000题,但是复习效果可能不理想,因为1000题的内容难度高,最好基础好,能全程跟张宇的选择,否则容易浪费时间。 从题型上来看,1000题更注重于综合类的题目,题型上有些非常规。 使用1000题…

每日一题 --- 链表相交[力扣][Go]

链表相交 题目:面试题 02.07. 链表相交 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交**:** 题目数据 保证 整个链式结…

【计算机操作系统】深入探究CPU,PCB和进程工作原理

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…