pk-fr / yakpro-po

YAK Pro - Php Obfuscator
http://www.php-obfuscator.com
Other
1.24k stars 350 forks source link

No delete #[\ReturnTypeWillChange] of php 8.1 #111

Closed FuriosoJack closed 1 year ago

FuriosoJack commented 1 year ago

how to allow the #[\ReturnTypeWillChange] comment from the php 8.1 version,

Or would it be better to refactor my code compatible with php 8.1 and release an obfuscated version of my package by changing the parser_mode setting to ONLY_PHP81?

Config:

`<?php // YAK Pro - Php Obfuscator: Config File // Do not delete the previous line! it's a magic string for config file! //======================================================================== // Author: Pascal KISSIAN // Resume: http://pascal.kissian.net // // CopyRight (c) 2015-2019 Pascal KISSIAN // // Published under the MIT License // Consider it as a proof of concept! // No warranty of any kind. // Use and abuse at your own risks. //======================================================================== // when we use the word ignore, that means that it is ignored during the obfuscation process (i.e. not obfuscated)

$conf->t_ignore_pre_defined_classes = 'all'; // 'all' (default value) , 'none', or array of pre-defined classes that you use in your software: // ex: array('Exception', 'PDO', 'PDOStatement', 'PDOException'); // As instantiation is done at runtime, it is impossible to statically determinate when a method call is detected, on which class the object belong. // so, all method names that exists in a pre_defined_class to ignore are ignored within every classes. // if you have some method names in your classes that have the same name that a predefine class method, it will not be obfuscated. // you can limit the number of method names to ignore by providing an array of the pre-defined classes you really use in your software! // same behaviour for properties...

$conf->t_ignore_constants = null; // array where values are names to ignore. $conf->t_ignore_variables = null; // array where values are names to ignore. $conf->t_ignore_functions = null; // array where values are names to ignore. $conf->t_ignore_class_constants = null; // array where values are names to ignore. $conf->t_ignore_methods = null; // array where values are names to ignore. $conf->t_ignore_properties = null; // array where values are names to ignore. $conf->t_ignore_classes = null; // array where values are names to ignore. $conf->t_ignore_interfaces = null; // array where values are names to ignore. $conf->t_ignore_traits = null; // array where values are names to ignore. $conf->t_ignore_namespaces = null; // array where values are names to ignore. $conf->t_ignore_labels = null; // array where values are names to ignore.

$conf->t_ignore_constants_prefix = null; // array where values are prefix of names to ignore. $conf->t_ignore_variables_prefix = null; // array where values are prefix of names to ignore. $conf->t_ignore_functions_prefix = null; // array where values are prefix of names to ignore.

$conf->t_ignore_class_constants_prefix = null; // array where values are prefix of names to ignore. $conf->t_ignore_properties_prefix = null; // array where values are prefix of names to ignore. $conf->t_ignore_methods_prefix = null; // array where values are prefix of names to ignore.

$conf->t_ignore_classes_prefix = null; // array where values are prefix of names to ignore. $conf->t_ignore_interfaces_prefix = null; // array where values are prefix of names to ignore. $conf->t_ignore_traits_prefix = null; // array where values are prefix of names to ignore. $conf->t_ignore_namespaces_prefix = null; // array where values are prefix of names to ignore. $conf->t_ignore_labels_prefix = null; // array where values are prefix of names to ignore.

$conf->parser_mode = 'ONLY_PHP7';// allowed modes are 'PREFER_PHP7', 'PREFER_PHP5', 'ONLY_PHP7', 'ONLY_PHP5' // see PHP-Parser documentation for meaning...

$conf->scramble_mode = 'identifier'; // allowed modes are 'identifier', 'hexa', 'numeric' $conf->scramble_length = null; // min length of scrambled names (min = 2; max = 16 for identifier, 32 for hexa and numeric)

$conf->t_obfuscate_php_extension = array('php'); // array where values are extensions of php files to be obfuscated.

$conf->obfuscate_constant_name = false; // self explanatory $conf->obfuscate_variable_name = false; // self explanatory $conf->obfuscate_function_name = false; // self explanatory $conf->obfuscate_class_name = false; // self explanatory $conf->obfuscate_interface_name = false; // self explanatory $conf->obfuscate_trait_name = false; // self explanatory $conf->obfuscate_class_constant_name = false; // self explanatory $conf->obfuscate_property_name = false; // self explanatory $conf->obfuscate_method_name = false; // self explanatory $conf->obfuscate_namespace_name = false; // self explanatory $conf->obfuscate_label_name = true; // label: , goto label; obfuscation $conf->obfuscate_if_statement = true; // obfuscation of if else elseif statements $conf->obfuscate_loop_statement = true; // obfuscation of for while do while statements $conf->obfuscate_string_literal = true; // pseudo-obfuscation of string literals

$conf->shuffle_stmts = false; // shuffle chunks of statements! disable this obfuscation (or minimize the number of chunks) if performance is important for you! $conf->shuffle_stmts_min_chunk_size = 1; // minimum number of statements in a chunk! the min value is 1, that gives you the maximum of obfuscation ... and the minimum of performance... $conf->shuffle_stmts_chunk_mode = 'fixed'; // 'fixed' or 'ratio' in fixed mode, the chunk_size is always equal to the min chunk size! $conf->shuffle_stmts_chunk_ratio = 2; // ratio > 1 100/ratio is the percentage of chunks in a statements sequence ratio = 2 means 50% ratio = 100 mins 1% ... // if you increase the number of chunks, you increase also the obfuscation level ... and you increase also the performance overhead!

$conf->strip_indentation = false; // all your obfuscated code will be generated on a single line $conf->abort_on_error = true; // self explanatory $conf->confirm = true; // rfu : will answer Y on confirmation request (reserved for future use ... or not...) $conf->silent = false; // display or not Information level messages.

$conf->source_directory = null; // self explanatory $conf->target_directory = null; // self explanatory

$conf->t_keep = null; // array of directory or file pathnames, to keep 'as is' (i.e. not obfuscate.) $conf->t_skip = null; // array of directory or file pathnames, to skip when exploring source tree structure ... they will not be on target! $conf->allow_and_overwrite_empty_files = true; // allow empty files to be kept as is

$conf->max_nested_directory = 99; $conf->follow_symlinks = false; // WARNING: setting it to true will copy the directory instead of replicating the link... // WARNING: if there is a loop of links, $conf->max_nested_directory can be created...

$conf->user_comment = null; // user comment to insert inside each obfuscated file

$conf->extract_comment_from_line = null; // when both 2 are set, each obfuscated file will contain an extract of the corresponding source file, $conf->extract_comment_to_line = null; // starting from extract_comment_from_line number, and ending at extract_comment_to_line line number.

?> `

pk-fr commented 1 year ago

I tested with your config file, and also with the default one... running yakpro-po on php 8.1.2-1ubuntu2.9

[\ReturnTypeWillChange] is not deleted....

perhaps you obfuscate it on a former php version?

FuriosoJack commented 1 year ago

@pk-fr thansk, pk-fr. If you were compiling on PHP8.1 however you wanted to know then the parameter $conf->parser_mode = 'ONLY_PHP7'; It had some effect if, for example, I compiled in 8.1 but I left ONLY_PHP7

pk-fr commented 1 year ago

I just pass the parameter to PHP-Parser ... I do not know how it is interpreted...

Please refer to : https://github.com/nikic/PHP-Parser/blob/4.x/doc/2_Usage_of_basic_components.markdown