翻譯|行業(yè)資訊|編輯:胡濤|2024-03-20 11:40:24.757|閱讀 113 次
概述:VMProtect是目前最強(qiáng)大的反盜版解決方案之一,許多領(lǐng)先的軟件發(fā)行商都在使用它。VMProtect允許保護(hù)可執(zhí)行文件(EXE,SCR),動(dòng)態(tài)鏈接庫(kù)(DLL,OCX,BPL)和驅(qū)動(dòng)程序(SYS)。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
上篇文章《加密軟件VMProtect教程:使用腳本Core (上)》向您介紹了腳本水印、許可證、文件、文件夾部分內(nèi)容,接下來(lái)將繼續(xù)向您介紹后半部分~
VMProtect是新一代軟件保護(hù)實(shí)用程序。VMProtect支持德?tīng)柗啤orland C Builder、Visual C/C++、Visual Basic(本機(jī))、Virtual Pascal和XCode編譯器。
同時(shí),VMProtect有一個(gè)內(nèi)置的反匯編程序,可以與Windows和Mac OS X可執(zhí)行文件一起使用,并且還可以鏈接編譯器創(chuàng)建的MAP文件,以快速選擇要保護(hù)的代碼片段。
為了輕松實(shí)現(xiàn)應(yīng)用程序保護(hù)任務(wù)的自動(dòng)化,VMProtect實(shí)現(xiàn)了內(nèi)置腳本語(yǔ)言。VMProtect完全支持Windows系列的32/64位操作系統(tǒng)(從Windows 2000開(kāi)始)和Mac OSX(從版本10.6開(kāi)始)。重要的是,無(wú)論目標(biāo)平臺(tái)如何,VMProtect都支持所有范圍的可執(zhí)行文件,即Windows版本可以處理Mac OS X版本的文件,反之亦然。
常量,以配合PE格式:
enum PEFormat {
// Directory Entries
IMAGE_DIRECTORY_ENTRY_EXPORT,
IMAGE_DIRECTORY_ENTRY_IMPORT,
IMAGE_DIRECTORY_ENTRY_RESOURCE,
IMAGE_DIRECTORY_ENTRY_EXCEPTION,
IMAGE_DIRECTORY_ENTRY_SECURITY,
IMAGE_DIRECTORY_ENTRY_BASERELOC,
IMAGE_DIRECTORY_ENTRY_DEBUG,
IMAGE_DIRECTORY_ENTRY_ARCHITECTURE,
IMAGE_DIRECTORY_ENTRY_TLS,
IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG,
IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT,
IMAGE_DIRECTORY_ENTRY_IAT,
IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT,
IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR,
// Section characteristics
IMAGE_SCN_CNT_CODE,
IMAGE_SCN_CNT_INITIALIZED_DATA,
IMAGE_SCN_CNT_UNINITIALIZED_DATA,
IMAGE_SCN_MEM_DISCARDABLE,
IMAGE_SCN_MEM_NOT_CACHED,
IMAGE_SCN_MEM_NOT_PAGED,
IMAGE_SCN_MEM_SHARED,
IMAGE_SCN_MEM_EXECUTE,
IMAGE_SCN_MEM_READ,
IMAGE_SCN_MEM_WRITE,
// Resource types
RT_CURSOR,
RT_BITMAP,
RT_ICON,
RT_MENU,
RT_DIALOG,
RT_STRING,
RT_FONTDIR,
RT_FONT,
RT_ACCELERATOR,
RT_RCDATA,
RT_MESSAGETABLE,
RT_GROUP_CURSOR,
RT_GROUP_ICON,
RT_VERSION,
RT_DLGINCLUDE,
RT_PLUGPLAY,
RT_VXD,
RT_ANICURSOR,
RT_ANIICON,
RT_HTML,
RT_MANIFEST,
RT_DLGINIT,
RT_TOOLBAR
};
一個(gè)處理PE文件的類:
class PEFile {
public:
string name(); // returns the filename
string format(); // returns the "PE" format name
uint64 size(); // returns the size of the file
int count(); // returns the number of architectures in the list
PEArchitecture item(int index); // returns an architecture with the given index
uint64 seek(uint64 offset); // sets a file position
uint64 tell(); // returns a file position
int write(string buffer); // records a buffer to the file
};
一個(gè)與PE架構(gòu)一起工作的類:
class PEArchitecture {
public:
string name(); // returns the name of the architecture
PEFile file(); // returns the parent file
uint64 entryPoint(); // returns the starting address
uint64 imageBase(); // returns the base offset
OperandSize cpuAddressSize(); // returns bit count of the architecture
uint64 size(); // returns the size of the architecture
PESegments segments(); // returns the list of segments
PESections sections(); // returns the list of sections
PEDirectories directories(); // returns the list of directories
PEImports imports(); // returns the list of imported libraries
PEExports exports(); // returns the list of exported functions
PEResources resources(); // returns the list of resources
PEFixups fixups(); // returns the list of relocations (fixups);
MapFunctions mapFunctions(); // returns the list of functions available for protection
IntelFunctions functions(); // returns the list of protected functions
bool addressSeek(uint64 address); // sets a file position
uint64 seek(uint64 offset); // sets a file position
uint64 tell(); // returns a file position
int write(string buffer); // writes a buffer to a file
};
一個(gè)用于處理PE架構(gòu)的片段列表的類:
class PESegments {
public:
PESegment item(int index); // returns a segment with the given index
int count(); // returns the number of segments in the list
PESegment itemByAddress(uint64 address); // returns the segment at the given address
};
一個(gè)與PE架構(gòu)段合作的類:
class PESegment {
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 (offset) 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
void setName(string name); // sets the name of the segment
};
一個(gè)用于處理PE架構(gòu)部分列表的類:
class PESections {
public:
PESection item(int index); // returns a section with the given index
int count(); // returns the number of sections in the list
PESection itemByAddress(uint64 address); // returns a section at the given address
};
一個(gè)與PE架構(gòu)部分合作的類:
class PESection {
public:
uint64 address(); // returns the address of the section
string name(); // returns the name of the section
uint64 size(); // returns the size of the section
int offset(); // returns the file positions of the section
PESegme
nt segment(); // returns the parent segment
};
一個(gè)處理PE架構(gòu)目錄的類:
class PEDirectories {
public:
PEDirectory item(int index); // returns a directory with the given index
int count(); // returns the number of directories in the list
PEDirectory itemByType(int type); // returns a directory of the given type
};
一個(gè)與PE架構(gòu)目錄協(xié)同工作的類:
class PEDirectory {
public:
uint64 address(); // returns the address of the directory
string name(); // returns the name of the directory
uint64 size(); // returns the size of the directory
int type(); // returns the type of the directory
void setAddress(uint64 address); // sets the address of the directory
void setSize(int size); // sets the size of the directory
void clear(); // clears the address and the size of the directory
};
一個(gè)用于處理PE架構(gòu)的導(dǎo)入庫(kù)列表的類:
class PEImports {
public:
PEImport item(int index); // returns a library with the given index
int count(); // returns the number of libraries in the list
PEImport itemByName(string name); // returns a library with the given name
};
一個(gè)與PE架構(gòu)的導(dǎo)入庫(kù)一起工作的類:
class PEImport {
public:
string name(); // returns the name of the library
PEImportFunction item(int index); // returns an imported function with the given index
int count(); // returns the number of imported functions
void setName(string name); // sets the name of the library
};
一個(gè)與PE架構(gòu)的導(dǎo)入函數(shù)一起工作的類:
class PEImportFunction {
public:
uint64 address(); // returns a memory address where the imported function address is stored
string name(); // returns the name of the imported function
}
一個(gè)用于處理PE架構(gòu)的導(dǎo)出函數(shù)列表的類:
class PEExports {
public:
string name(); // returns the name of the library
PEExport item(int index); // returns an exported function with the given index
int count(); // returns the number of exported functions in the list
void clear(); // clears the list
PEExport itemByAddress(uint64 address); // returns an exported function at the given address
PEExport itemByName(string name); // returns an exported function with the given name
};
一個(gè)與PE架構(gòu)導(dǎo)出的函數(shù)相匹配的類:
class PEExport {
public:
uint64 address(); // returns the address of the exported function
string name(); // returns the name of the exported function
int ordinal(); // returns the ordinal of the exported function
string forwardedName(); // returns the name of the function the exported function forwards to
void destroy(); // destroys the exported function
};
一個(gè)處理PE架構(gòu)資源列表的類:
class PEResources {
public:
PEResource item(int index); // returns a resources with the given index
int count(); // returns the number of resources in the list
void clear(); // clears the list
PEResource itemByType(int type); // returns a resource of the given type
PEResource itemByName(string name); // returns a resource with the given name
};
一個(gè)與PE架構(gòu)資源一起工作的類:
class PEResource {
public:
PEResource item(int index); // returns a resource with the given index
int count(); // returns the number of resources in the list
void clear(); // clears the list
uint64 address(); // returns the address of the resource
int size(); // returns the size of the resource
string name(); // returns the name of the resource
int type(); // returns the type of the resource
bool isDirectory(); // returns the "Directory" property
void destroy(); // destroys the resource
PEResource itemByName(string name); // returns a resource with the given name
bool excludedFromPacking(); // returns the "Excluded from packing" property
};
一個(gè)用于處理PE架構(gòu)修復(fù)(重新定位)列表的類:
class PEFixups {
public:
PEFixup item(int index); // returns an element with the given index
int count(); // returns the number of elements in the list
PEFixup itemByAddress(uint64 address); // returns an element at the given address
};
一個(gè)與PE架構(gòu)修復(fù)(重定位)有關(guān)的類:
class PEFixup {
public:
uint64 address(); // returns the address of the element
};
獲取完整>>>vmprotect 中文支持手冊(cè)
以上便是關(guān)于幾個(gè)秘鑰生成器的分享,如果您有任何疑問(wèn)或者想獲取更多產(chǎn)品試用/授權(quán)/價(jià)格信息,可以咨詢我們的了解~
歡迎體驗(yàn)更多加密解密相關(guān)軟件或者加入我們技術(shù)交流群(766135708)
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@ke049m.cn