improved
fixed
Obfuscation Tool
PBO Tools - Obfuscator v1.7.0
Changelog:
- Resolved an issue where the incorrect subscription was displayed.
- Resolved an issue which could lead to application & network instability.
- Resolved an issue where warnings weren't shown for free users.
- Resolved an issue where information was incorrectly reflected in logs.
- Added support for user-defined 'Type Defines' in settings.
- Added an option to show or hide warning messages in settings.
- Enhanced file validation to detect and alert users about invalid or corrupt files.
- Server and client optimizations to improve the speed and reliability of PBO Tools.
SHA-256:
- 45f254b80c7559a0ae2b94a391db5de02bb563d589383eb736cd43a088d3ef24
Download:
Configuration: (settings.json)
{
"Version": "2.1",
"Configuration": {
"OutputLocation": "P:\\Output\\",
"SigningKeyLocation": "C:\\Users\\YourUsername\\Documents\\SigningKeys\\my_private_key.biprivatekey"
},
"Notifications": {
"Errors": true,
"Warnings": true,
"Success": true
},
"ExclusionLists": {
"ExcludeFromPBO": [
".git\\",
".vs\\",
".vscode\\",
".idea\\",
".cfg",
".h",
".hpp",
".png",
".ini",
".txt",
"thumbs.db",
".pbo",
".dep",
".bak",
".idx",
".log",
".pew",
"source",
".tga",
".bat",
".spp",
".psd",
".cmd",
".mcr",
".fbx",
".max",
".meta",
"$version$",
"$product$",
"$prefix$"
],
"ExcludeFromCompression": [
".p3d",
".wss",
".ogg",
".jpg",
".wav",
".fsm",
".paa",
".bin",
".edds"
]
},
"PBOSettings": {
"Binarize": true,
"Compression": true
},
"PBOObfuscation": {
"JunkCode": true,
"CrashUnpackers": true,
"ScramblePaths": true,
"WindowsGUIDs": true,
"InvalidExtensions": true,
"ComplexPaths": true,
"NonVisibleChars": true
},
"CodeObfuscation": {
"Classes": true,
"Functions": true,
"Variables": true,
"Strings": true,
"TypeDefines": true,
"DataTypes": []
}
}
General Notes:
- This version is not signed with a code signing certificate, as we can’t justify the NZ$500 annual cost for one that includes our company name. However, we have rigorous security measures in place to validate the application’s integrity and ensure user safety.
- Notificationshas been simplified, and a newWarningsboolean has been added, allowing you to enable or disable warning messages that require confirmation before proceeding.
- Updatessection has been removed, PBO Tools will now always check for updates on startup.
- PBOObfuscationandCodeObfuscationhave been simplified in their wording for better clarity.
- SelectedGamewas deprecated and removed.
- PBOSettingshas been streamlined,BinarizeModelsandBinarizeConfigshave been combined into a singleBinarizeboolean.
- CompressPBOhas been renamed toCompressionfor simplicity.
Professional Edition Users:
- C:\\Users\\YourUsername\\Documents\\SigningKeys\\my_private_key.biprivatekeyis a placeholder path. Please replace it with the actual path to your .biprivatekey file if you intend to sign your PBOs.
- An example of DataTypes that can be used is:
"DataTypes": [
"Man",
"DayZPlayer",
"PlayerBase",
"SurvivorBase",
"PlayerIdentity",
"EntityAI",
"IEntity",
"ItemBase",
"Inventory_Base",
"Object",
"ScriptModule",
"ActionTarget",
"ActionData",
"Timer",
"InventoryLocation",
"Managed",
"OLinkT",
"CallType",
"ParamsReadContext",
"Widget",
"TextWidget",
"MultilineTextWidget",
"RichTextWidget",
"RenderTargetWidget",
"RTTextureWidget",
"ImageWidget",
"MultilineEditBoxWidget",
"UIWidget",
"CanvasWidget",
"EditBoxWidget",
"SliderWidget",
"SimpleProgressBarWidget",
"ProgressBarWidget",
"ButtonWidget",
"XComboBoxWidget",
"CheckBoxWidget",
"BaseListboxWidget",
"SimpleListboxWidget",
"TextListboxWidget",
"SpacerBaseWidget",
"SpacerWidget",
"GridSpacerWidget",
"WrapSpacerWidget",
"ScrollWidget",
"VideoWidget",
"TStringArray",
"TFloatArray",
"TIntArray",
"TBoolArray",
"TClassArray",
"TManagedArray",
"TManagedRefArray",
"TVectorArray",
"TTypenameArray"
]
What Are TypeDefs?
A typedef is used to obscure the original meaning of a data type, making it more difficult to reverse-engineer the code. This helps protect the structure of the program by concealing type relationships and their usage.
Before TypeDefines is enabled:
ProcessGameLogic.c
void ProcessGameLogic() {
PlayerBase* player = new PlayerBase();
player->TakeDamage(20);
EntityAI* enemyAI = new EntityAI();
enemyAI->ProcessAI();
Inventory_Base* inventory = new Inventory_Base();
inventory->AddItem("Medkit");
}
After TypeDefines is enabled:
typedefines.c
typedef PlayerBase A7X9Y1;
typedef EntityAI L2K3M4;
typedef Inventory_Base P5D6E7;
typedef Weapon_Base Z4B2X6;
typedef DayZPlayer F1G8H3;
typedef SurvivorBase Q9W2E5;
typedef Object V3N7M2;
typedef ScriptModule T5K4L8;
typedef ActionTarget X2Y7Z9;
typedef ActionData C3D6F8;
typedef Timer B8P5Q1;
typedef InventoryLocation W4X6Y2;
typedef Managed J7L3M9;
typedef OLinkT R9P2T4;
typedef CallType K2M8N5;
typedef ParamsReadContext Y1L4Z7;
typedef Widget H6V3T9;
typedef TextWidget D9F2X5;
typedef MultilineTextWidget G8K4Y2;
typedef RichTextWidget M3N7P6;
typedef RenderTargetWidget X5Z8Q1;
typedef RTTextureWidget L9W3K2;
typedef ImageWidget P6F1M7;
typedef MultilineEditBoxWidget N4Y2X8;
typedef UIWidget B3K7V9;
typedef CanvasWidget F9M2L4;
typedef EditBoxWidget Y6X3P8;
typedef SliderWidget L2N7Q4;
typedef SimpleProgressBarWidget K4Y1V6;
typedef ProgressBarWidget M8X5P2;
typedef ButtonWidget N2L6K9;
typedef XComboBoxWidget Y3P7T5;
typedef CheckBoxWidget Q8F2M4;
typedef BaseListboxWidget W7L9X1;
typedef SimpleListboxWidget P4N3K6;
typedef TextListboxWidget T9V2X8;
typedef SpacerBaseWidget K1M5L7;
typedef SpacerWidget F3X6P9;
typedef GridSpacerWidget Y2N4Q7;
typedef WrapSpacerWidget L8K9M2;
typedef ScrollWidget P7X1V3;
typedef VideoWidget M6N3K8;
typedef TStringArray T4Y9X5;
typedef TFloatArray F8K1M3;
typedef TIntArray P2N7L6;
typedef TBoolArray X9V3Q1;
typedef TClassArray Y5K8M4;
typedef TManagedArray M1N2X7;
typedef TManagedRefArray P3Y6K9;
typedef TVectorArray L4K7M8;
typedef TTypenameArray N9X2Q5;
ProcessGameLogic.c
void ProcessGameLogic() {
A7X9Y1* player = new A7X9Y1();
player->TakeDamage(20);
L2K3M4* enemyAI = new L2K3M4();
enemyAI->ProcessAI();
P5D6E7* inventory = new P5D6E7();
inventory->AddItem("Medkit");
}