-
1. Data: 2022-10-24 15:42:06
Temat: mój obfuskator - problem projektowy
Od: Jivanmukta <j...@p...onet.pl>
Piszę tutaj bo na pl.como.lang.php nie dostałem odpowiedzi.
Napisałem w C++ obfuskator PHP 5/7/8. Obfuskator umożliwia m.in.
zaciemnienie projektu wykorzystującego Composera, tzn. katalog vendor.
Ponieważ obfuskuję samą aplikację a nie frameworki i biblioteki z
katalogu vendor potrzebuję zrobić żeby identifikatory z vendor nie były
zastępowane losowymi. W tym celu analizuję kod frameworków i bibliotek z
katalogu vendor w poszukiwaniu identyfikatorów (zmiennych, funkcji,
metod, właściwości itd.). Problem w tym że jeśli katalog vendor jest
duży, tzn. liczy wiele podkatalogów, proces analizy trwa długo, nawet
kilka godzin. Żeby nie analizować katalogu vendor wielokrotnie (przy
każdej obfuskacji projektu) zapamiętuje znalezione w vendor
identyfikatory w cache'u (pliku xml-owym). Modyfikacja katalogu vendor
(np. dodanie Composerem nowej biblioteki lub update) nie powoduje u mnie
ponownego parsowania całego vendor bo zapamiętuję w cache'u timestampy
podkatalogów vendor.
Czy takie rozwiązanie jest do przyjęcia, tzn. że pierwsza obfuskacja
może trwać nawet kilka godzin, ale późniejsze już w minutach?
Jeśli nie, to czy ktoś mógłby mi rzucić pomysł jak rozwiązać ten
problem? Chcę żeby mój obfuskator był uniwersalny, tzn. potrafił
zaciemnić projekt wykorzystujący różne frameworki i różne biblioteki.
Dużo czasu zajmuje przetwarzanie wyrazeniami regularnymi kazdego wiersza
kazdego pliku duzego katalogu vendor.
const string remembering_regexps[index_what_num][2] =
{{"(static|abstract|final)?\\s*(public)?\\s*(static|
abstract|final)?\\s*(function)\\s+("
+ ::identifier + ")\\s*\\(", ""},
{"(static|abstract|final)?\\s*(private|protected|pub
lic)?\\s*(static|abstract|final)?\\s*(function)\\s+(
"
+ ::identifier + ")\\s*\\(", ""},
{"\\b(function)\\s+(" + ::identifier + ")\\s*\\(", ""},
{"(static|private|protected|public)?\\s*(readonly)?\
\s*([_a-zA-Z0-9]+)?\\s*(\\$("
+ ::identifier + ")\\s*=.*,?\\s*)+", // uproszczenie
"(static|private|protected|public)?\\s*(readonly)?\\
s*([_a-zA-Z0-9]+)?\\s*(\\$("
+ ::identifier + ")\\s*,?\\s*)+"}, // uproszczenie
{"(?!(private|protected|public))\\s*(\\s*|[^:\\-][^:
>])\\s*(\\\\\\\\)*\\$("
+ ::identifier + ")", ""}}; // pasuje do "instanceof
$var" a nie pasuje do "self::$prop;" czy "->$prop"
Ponadto dla każdego pliku wywołuję skrypt PHP robiący tokenizację.
-
2. Data: 2022-10-24 15:44:18
Temat: Re: mój obfuskator - problem projektowy
Od: heby <h...@p...onet.pl>
On 24/10/2022 15:42, Jivanmukta wrote:
> Napisałem w C++ obfuskator PHP
Komu i do czego to jest potrzebne?
-
3. Data: 2022-10-25 12:46:23
Temat: Re: mój obfuskator - problem projektowy
Od: Jivanmukta <j...@p...onet.pl>
W dniu 24.10.2022 o 15:44, heby pisze:
> On 24/10/2022 15:42, Jivanmukta wrote:
>> Napisałem w C++ obfuskator PHP
>
> Komu i do czego to jest potrzebne?
>
Jesteś prowokatorem czy jesteś niedorozwinięty?
-
4. Data: 2022-10-25 17:31:14
Temat: Re: mój obfuskator - problem projektowy
Od: heby <h...@p...onet.pl>
On 25/10/2022 12:46, Jivanmukta wrote:
>>> Napisałem w C++ obfuskator PHP
>> Komu i do czego to jest potrzebne?
> Jesteś prowokatorem czy jesteś niedorozwinięty?
Raczej praktykiem. Skoro coś trwa godzinami, a przeciez poprawki i
refaktoringo się same nie zrobią, wiec x100, to musi istnieć jakiś
*NAPRAWDĘ* znakomity powód babrania się w tym gównianym PHP aby było
widać ale nie było widać. Ciekawośc mnie zżera, jaki to powód.
-
5. Data: 2022-10-25 20:35:08
Temat: Re: mój obfuskator - problem projektowy
Od: J-23 <B...@p...fm>
W dniu 24.10.2022 o 15:42, Jivanmukta pisze:
> Piszę tutaj bo na pl.como.lang.php nie dostałem odpowiedzi.
>
> Napisałem w C++ obfuskator PHP 5/7/8. Obfuskator umożliwia m.in.
> zaciemnienie projektu wykorzystującego Composera, tzn. katalog vendor.
> Ponieważ obfuskuję samą aplikację a nie frameworki i biblioteki z
> katalogu vendor potrzebuję zrobić żeby identifikatory z vendor nie były
> zastępowane losowymi. W tym celu analizuję kod frameworków i bibliotek z
> katalogu vendor w poszukiwaniu identyfikatorów (zmiennych, funkcji,
> metod, właściwości itd.). Problem w tym że jeśli katalog vendor jest
> duży, tzn. liczy wiele podkatalogów, proces analizy trwa długo, nawet
> kilka godzin. Żeby nie analizować katalogu vendor wielokrotnie (przy
> każdej obfuskacji projektu) zapamiętuje znalezione w vendor
> identyfikatory w cache'u (pliku xml-owym). Modyfikacja katalogu vendor
> (np. dodanie Composerem nowej biblioteki lub update) nie powoduje u mnie
> ponownego parsowania całego vendor bo zapamiętuję w cache'u timestampy
> podkatalogów vendor.
>
> Czy takie rozwiązanie jest do przyjęcia, tzn. że pierwsza obfuskacja
> może trwać nawet kilka godzin, ale późniejsze już w minutach?
Wnioskuje po zapytaniu ze próbujesz zrobić narzędzie które będziesz
sprzedawał/dystrybuował na szerszą skale. Pytanie to nie powinno być na
grupę a do pierwszej partii klientów którzy ten produkt otrzymają.
Sposobów przyspieszenia tego jest dużo, ale tez nie będzie to proste w
implementacji. Musisz przeanalizować sobie gdzie jest dla Ciebie punkt
który zadowoli Ciebie lub Twoich klientów.
Pozdrawiam
-
6. Data: 2022-10-26 03:58:07
Temat: Re: mój obfuskator - problem projektowy
Od: Jivanmukta <j...@p...onet.pl>
W dniu 25.10.2022 o 20:35, J-23 pisze:
> Sposobów przyspieszenia tego jest dużo, ale tez nie będzie to proste w
> implementacji.
Ale czy jakąś optymalizację konkretnie masz na myśli?
--
Ta wiadomość e-mail została sprawdzona pod kątem wirusów przez oprogramowanie
antywirusowe AVG.
www.avg.com
-
7. Data: 2022-10-26 04:00:28
Temat: Re: mój obfuskator - problem projektowy
Od: Jivanmukta <j...@p...onet.pl>
W dniu 25.10.2022 o 17:31, heby pisze:
> On 25/10/2022 12:46, Jivanmukta wrote:
>>>> Napisałem w C++ obfuskator PHP
>>> Komu i do czego to jest potrzebne?
>> Jesteś prowokatorem czy jesteś niedorozwinięty?
>
> Raczej praktykiem. Skoro coś trwa godzinami, a przeciez poprawki i
> refaktoringo się same nie zrobią, wiec x100, to musi istnieć jakiś
> *NAPRAWDĘ* znakomity powód babrania się w tym gównianym PHP aby było
> widać ale nie było widać. Ciekawośc mnie zżera, jaki to powód.
>
Mnie PHP bardzo odpowiada a ostatnie wersje PHP wcale nie uważam za
gówniane. Lubię C++ i języki do niego podobne.
--
Ta wiadomość e-mail została sprawdzona pod kątem wirusów przez oprogramowanie
antywirusowe AVG.
www.avg.com
-
8. Data: 2022-10-26 09:18:48
Temat: Re: mój obfuskator - problem projektowy
Od: heby <h...@p...onet.pl>
On 26/10/2022 04:00, Jivanmukta wrote:
> Mnie PHP bardzo odpowiada a ostatnie wersje PHP wcale nie uważam za
> gówniane. Lubię C++ i języki do niego podobne.
Interesująca teza o tym podobieństwie do C++. Możesz rozwinąc jakie
cechy PHP są podobne do C++ i Ci się spodobały?
-
9. Data: 2022-10-26 12:00:29
Temat: Re: mój obfuskator - problem projektowy
Od: Jivanmukta <j...@p...onet.pl>
W dniu 26.10.2022 o 09:18, heby pisze:
> On 26/10/2022 04:00, Jivanmukta wrote:
>> Mnie PHP bardzo odpowiada a ostatnie wersje PHP wcale nie uważam za
>> gówniane. Lubię C++ i języki do niego podobne.
>
> Interesująca teza o tym podobieństwie do C++. Możesz rozwinąc jakie
> cechy PHP są podobne do C++ i Ci się spodobały?
>
Składnia.
-
10. Data: 2022-10-26 12:04:32
Temat: Re: mój obfuskator - problem projektowy
Od: Jivanmukta <j...@p...onet.pl>
W dniu 26.10.2022 o 09:18, heby pisze:
> Interesująca teza o tym podobieństwie do C++. Możesz rozwinąc jakie
> cechy PHP są podobne do C++ i Ci się spodobały?
>
I to że wiele funkcji się tak samo lub podobnie nazywa, dzięki czemu
łatwo mi było przejść na PHP (C++ miałem na studiach). Poza tym lubię
paradygmat imperatywny i obiektowość.