Thread View: pl.comp.lang.php
18 messages
18 total messages
Started by RM
Mon, 10 Aug 2020 06:32
jak odróżnić zmienne globalne od lokalych przy parsowaniu kodu PHP
Author: RM
Date: Mon, 10 Aug 2020 06:32
Date: Mon, 10 Aug 2020 06:32
16 lines
2340 bytes
2340 bytes
Piszę obfuskator PHP w C++. Chciałbym, żeby obfuskator działał z dowolnym frameworkiem PHP. W tym celu potrzebuję prasować framework, żeby wyodrębnić identifkatory zarezerwowane przez framework (żeby tych nie zamieniać na losowe - generowane przez obfuskator). Przy czy istotne jest rozróżnienie zmiennych globalnych i lokalnych we frameworku, bo globalne nie mogą być zastępowane w generowanym kodzie PHP (jeśli framework zawiera np. tablicę globalną $config to wygenerowanym kodzie ta nazwa musi być zarezerowana ni zamieniana na losowy, generowany ciąg znaków). Powstaje więc pytanie jak przy parsowaniu frameworka (robię to wyrażeniami regularnymi) odróżnić zmienne globalne od lokalnych. Nie każda zmienna globalna $x musi mieć deklarację "global $x;" w jakieś funkcji frameworka, więc jest to problem. Jeśli w aplikacji PHP występuje użycie zmiennej globalnej frameworka o nazwie $config to nie powinno ono być obfuskowane, a jeśli występuje użycie zmiennej nieglobalnej (lokalnej lub paramtru) o nazwie $x, to to powinno być obfuskowane.
Re: jak odróżnić zmienne globalne od lokalych przy parsowaniu kodu PHP
Author: Tomek
Date: Tue, 11 Aug 2020 06:14
Date: Tue, 11 Aug 2020 06:14
23 lines
2372 bytes
2372 bytes
W dniu 10.08.2020 o 08:32, RM pisze: > Piszę obfuskator PHP w C++. Chciałbym, żeby obfuskator działał z > dowolnym frameworkiem PHP. W tym celu potrzebuję prasować framework, > żeby wyodrębnić identifkatory zarezerwowane przez framework (żeby tych > nie zamieniać na losowe - generowane przez obfuskator). Przy czy istotne > jest rozróżnienie zmiennych globalnych i lokalnych we frameworku, bo > globalne nie mogą być zastępowane w generowanym kodzie PHP (jeśli > framework zawiera np. tablicę globalną $config to wygenerowanym kodzie > ta nazwa musi być zarezerowana ni zamieniana na losowy, generowany ciąg > znaków). Powstaje więc pytanie jak przy parsowaniu frameworka (robię to > wyrażeniami regularnymi) odróżnić zmienne globalne od lokalnych. Nie > każda zmienna globalna $x musi mieć deklarację "global $x;" w jakieś > funkcji frameworka, więc jest to problem. > Jeśli w aplikacji PHP występuje użycie zmiennej globalnej frameworka o > nazwie $config to nie powinno ono być obfuskowane, a jeśli występuje > użycie zmiennej nieglobalnej (lokalnej lub paramtru) o nazwie $x, to to > powinno być obfuskowane. 1. Zapomniałeś o $GLOBALS['x'] 2. Nie prościej pisać to w PHP zamiast w C++?
Re: jak odróżnić zmienne globalne od lokalych przy parsowaniu kodu PHP
Author: RM
Date: Tue, 11 Aug 2020 07:11
Date: Tue, 11 Aug 2020 07:11
7 lines
1301 bytes
1301 bytes
> 1. > Zapomniałeś o $GLOBALS['x']Ale ja nie wykonuję kodu frameworka, tylko go parsuję (przetwarzam jak tekst) więc nie mogę użyć $GLOBALS > 2. > Nie prościej pisać to w PHP zamiast w C++? Nie, bo chcę mieć binarkę pod Linux i Windows
Re: jak odróżnić zmienne globalne od lokalych przy parsowaniu kodu PHP
Author: Tomek
Date: Tue, 11 Aug 2020 09:13
Date: Tue, 11 Aug 2020 09:13
16 lines
1791 bytes
1791 bytes
W dniu 11.08.2020 o 09:11, RM pisze: >> 1. >> Zapomniałeś o $GLOBALS['x'] > Ale ja nie wykonuję kodu frameworka, tylko go parsuję (przetwarzam jak tekst) więc nie mogę użyć $GLOBALS Będziesz przetwarzał wyłącznie Swój kod PHP czy również cudzy? Bo jeśli w cudzym kodzie będzie : " $GLOBALS['x'] = 123; " to co? >> 2. >> Nie prościej pisać to w PHP zamiast w C++? > Nie, bo chcę mieć binarkę pod Linux i Windows A skorzystanie z bcompiler nie rozwiązałoby by Twojego problemu z "zaciemnianiem"?
Re: jak odróżnić zmienne globalne od lokalych przy parsowaniu kodu PHP
Author: RM
Date: Tue, 11 Aug 2020 09:16
Date: Tue, 11 Aug 2020 09:16
21 lines
1849 bytes
1849 bytes
W dniu 11.08.2020 o 11:13, Tomek pisze: > W dniu 11.08.2020 o 09:11, RM pisze: >>> 1. >>> Zapomniałeś o $GLOBALS['x'] > >> Ale ja nie wykonuję kodu frameworka, tylko go parsuję (przetwarzam >> jak tekst) więc nie mogę użyć $GLOBALS > > Będziesz przetwarzał wyłącznie Swój kod PHP czy również cudzy? Dowolną aplikację w PHP z wykorzystaniem dowolnego frameworka PHP. >>> 2. >>> Nie prościej pisać to w PHP zamiast w C++? >> Nie, bo chcę mieć binarkę pod Linux i Windows > > A skorzystanie z bcompiler nie rozwiązałoby by Twojego problemu z > "zaciemnianiem"? Napisałem już 80% obfuskatora w C++, tzn. potrafi mi obfuskować dowolną aplikację z CodeIgniter.
Re: jak odróżnić zmienne globalne od lokalych przy parsowaniu kodu PHP
Author: RM
Date: Tue, 11 Aug 2020 09:22
Date: Tue, 11 Aug 2020 09:22
8 lines
1575 bytes
1575 bytes
W dniu 11.08.2020 o 11:16, RM pisze: > Napisałem już 80% obfuskatora w C++, tzn. potrafi mi obfuskować dowolną > aplikację z CodeIgniter. Tylko że na razie mam w kodzie (na stałych) zaszyte zarezerwowane identifikatory CodeIgnitera. Teraz chcę zrobić współpracę z dowolnym frameworkiem PHP i w tym celu muszę analizować kod frameworka, żeby wydobyć zarezerwowane identyfikatory.
Re: jak odróżnić zmienne globalne od lokalych przy parsowaniu kodu PHP
Author: Tomek
Date: Tue, 11 Aug 2020 09:39
Date: Tue, 11 Aug 2020 09:39
11 lines
1606 bytes
1606 bytes
W dniu 11.08.2020 o 09:11, RM pisze: >> 1. >> Zapomniałeś o $GLOBALS['x'] Ale ja nie wykonuję kodu frameworka, tylko go parsuję (przetwarzam jak tekst) więc nie mogę użyć $GLOBALS Nie rozumiem o co ci chodzi z "więc nie mogę użyć $GLOBALS"? "global $x;" to nie jedyny sposób powstawania globali.
Re: jak odróżnić zmienne globalne od lokalych przy parsowaniu kodu PHP
Author: RM
Date: Tue, 11 Aug 2020 09:46
Date: Tue, 11 Aug 2020 09:46
13 lines
1653 bytes
1653 bytes
W dniu 11.08.2020 o 11:16, RM pisze: > W dniu 11.08.2020 o 11:13, Tomek pisze: >> W dniu 11.08.2020 o 09:11, RM pisze: >>>> 1. >>>> Zapomniałeś o $GLOBALS['x'] >> >>> Ale ja nie wykonuję kodu frameworka, tylko go parsuję (przetwarzam >>> jak tekst) więc nie mogę użyć $GLOBALS >> >> Będziesz przetwarzał wyłącznie Swój kod PHP czy również cudzy? > Dowolną aplikację w PHP z wykorzystaniem dowolnego frameworka PHP. Bo to jest dość ambitny projekt.
Re: jak odróżnić zmienne globalne od lokalych przy parsowaniu kodu PHP
Author: RM
Date: Tue, 11 Aug 2020 09:49
Date: Tue, 11 Aug 2020 09:49
12 lines
1572 bytes
1572 bytes
W dniu 11.08.2020 o 11:39, Tomek pisze: > W dniu 11.08.2020 o 09:11, RM pisze: >>> 1. >>> Zapomniałeś o $GLOBALS['x'] > Ale ja nie wykonuję kodu frameworka, tylko go parsuję (przetwarzam jak > tekst) więc nie mogę użyć $GLOBALS > > > Nie rozumiem o co ci chodzi z "więc nie mogę użyć $GLOBALS"? Po w programie w C++ nie mogę sprawdzić co zawierałaby PHPowska tablica $GLOBALS przy wykonaniu aplikacji PHP.
Re: jak odróżnić zmienne globalne od lokalych przy parsowaniu kodu PHP
Author: Tomek
Date: Tue, 11 Aug 2020 10:13
Date: Tue, 11 Aug 2020 10:13
32 lines
2206 bytes
2206 bytes
W dniu 11.08.2020 o 11:49, RM pisze:
> W dniu 11.08.2020 o 11:39, Tomek pisze:
>> W dniu 11.08.2020 o 09:11, RM pisze:
>>>> 1.
>>>> Zapomniałeś o $GLOBALS['x']
>> Ale ja nie wykonuję kodu frameworka, tylko go parsuję (przetwarzam jak
>> tekst) więc nie mogę użyć $GLOBALS
>>
>>
>> Nie rozumiem o co ci chodzi z "więc nie mogę użyć $GLOBALS"?
>
> Po w programie w C++ nie mogę sprawdzić co zawierałaby PHPowska tablica
> $GLOBALS przy wykonaniu aplikacji PHP.
Kompletnie nie rozumiesz o czym piszę.
Nikt Ci nie każe wykonywać kodu PHP.
W kodzie PHP będziesz miał taki kod:
==========================================================
<?php
$GLOBALS['aaa'] = array('zzz','yyy');
foreach ($GLOBALS['aaa'] as $v) {
echo $v;
}
========================================
i co z tym zrobisz?
Re: jak odróżnić zmienne globalne od lokalych przy parsowaniu kodu PHP
Author: RM
Date: Tue, 11 Aug 2020 10:15
Date: Tue, 11 Aug 2020 10:15
35 lines
2181 bytes
2181 bytes
W dniu 11.08.2020 o 12:13, Tomek pisze:
> W dniu 11.08.2020 o 11:49, RM pisze:
>> W dniu 11.08.2020 o 11:39, Tomek pisze:
>>> W dniu 11.08.2020 o 09:11, RM pisze:
>>>>> 1.
>>>>> Zapomniałeś o $GLOBALS['x']
>>> Ale ja nie wykonuję kodu frameworka, tylko go parsuję (przetwarzam
>>> jak tekst) więc nie mogę użyć $GLOBALS
>>>
>>>
>>> Nie rozumiem o co ci chodzi z "więc nie mogę użyć $GLOBALS"?
>>
>> Po w programie w C++ nie mogę sprawdzić co zawierałaby PHPowska
>> tablica $GLOBALS przy wykonaniu aplikacji PHP.
>
> Kompletnie nie rozumiesz o czym piszę.
> Nikt Ci nie każe wykonywać kodu PHP.
>
> W kodzie PHP będziesz miał taki kod:
>
> ==========================================================
> <?php
>
>
> $GLOBALS['aaa'] = array('zzz','yyy');
>
> foreach ($GLOBALS['aaa'] as $v) {
> echo $v;
> }
>
> ========================================
>
> i co z tym zrobisz?
Poddaję się.
Re: jak odróżnić zmienne globalne od lokalych przy parsowaniu kodu PHP
Author: RM
Date: Tue, 11 Aug 2020 10:26
Date: Tue, 11 Aug 2020 10:26
35 lines
2213 bytes
2213 bytes
W dniu 11.08.2020 o 12:13, Tomek pisze:
> W dniu 11.08.2020 o 11:49, RM pisze:
>> W dniu 11.08.2020 o 11:39, Tomek pisze:
>>> W dniu 11.08.2020 o 09:11, RM pisze:
>>>>> 1.
>>>>> Zapomniałeś o $GLOBALS['x']
>>> Ale ja nie wykonuję kodu frameworka, tylko go parsuję (przetwarzam
>>> jak tekst) więc nie mogę użyć $GLOBALS
>>>
>>>
>>> Nie rozumiem o co ci chodzi z "więc nie mogę użyć $GLOBALS"?
>>
>> Po w programie w C++ nie mogę sprawdzić co zawierałaby PHPowska
>> tablica $GLOBALS przy wykonaniu aplikacji PHP.
>
> Kompletnie nie rozumiesz o czym piszę.
> Nikt Ci nie każe wykonywać kodu PHP.
>
> W kodzie PHP będziesz miał taki kod:
>
> ==========================================================
> <?php
>
>
> $GLOBALS['aaa'] = array('zzz','yyy');
>
> foreach ($GLOBALS['aaa'] as $v) {
> echo $v;
> }
>
> ========================================
>
> i co z tym zrobisz?
Mogę zostawić zmienna aaa nie zobfuskowaną.
Re: jak odróżnić zmienne globalne od lokalych przy parsowaniu kodu PHP
Author: Tomek
Date: Tue, 11 Aug 2020 10:31
Date: Tue, 11 Aug 2020 10:31
7 lines
1497 bytes
1497 bytes
W dniu 11.08.2020 o 12:15, RM pisze: > Bo to jest dość ambitny projekt. > Poddaję się. I to już koniec? Po projekcie?
Re: jak odróżnić zmienne globalne od lokalych przy parsowaniu kodu PHP
Author: RM
Date: Tue, 11 Aug 2020 12:01
Date: Tue, 11 Aug 2020 12:01
22 lines
1769 bytes
1769 bytes
W dniu 11.08.2020 o 12:26, RM pisze:
>> W kodzie PHP będziesz miał taki kod:
>>
>> ==========================================================
>> <?php
>>
>>
>> $GLOBALS['aaa'] = array('zzz','yyy');
>>
>> foreach ($GLOBALS['aaa'] as $v) {
>> echo $v;
>> }
>>
>> ========================================
>>
>> i co z tym zrobisz?
>
> Mogę zostawić zmienna aaa nie zobfuskowaną.
To jest rzadki przypadek. Nic się nie stanie jak takie rzadkie przypadki
nie zostaną zobfuskowane.
Re: jak odróżnić zmienne globalne od lokalych przy parsowaniu kodu PHP
Author: RM
Date: Tue, 11 Aug 2020 16:01
Date: Tue, 11 Aug 2020 16:01
20 lines
1800 bytes
1800 bytes
>> W kodzie PHP będziesz miał taki kod:
>>
>> ==========================================================
>> <?php
>>
>>
>> $GLOBALS['aaa'] = array('zzz','yyy');
>>
>> foreach ($GLOBALS['aaa'] as $v) {
>> echo $v;
>> }
>>
>> ========================================
>>
>> i co z tym zrobisz?
Jeśli chodzi Ci o taki przypadek w kodzie frameworka, to muszę wyłapać
takie zmienne. Jeśli chodzi co o taki przypadek w kodzie aplikacji PHP,
to mogę to zignorować (zostawić niezobfuskowane i nic się nie stanie).
Re: jak odróżnić zmienne globalne od lokalych przy parsowaniu kodu PHP
Author: RM
Date: Wed, 12 Aug 2020 13:31
Date: Wed, 12 Aug 2020 13:31
19 lines
2231 bytes
2231 bytes
W dniu 10.08.2020 o 08:32, RM pisze: > Piszę obfuskator PHP w C++. Chciałbym, żeby obfuskator działał z > dowolnym frameworkiem PHP. W tym celu potrzebuję prasować framework, > żeby wyodrębnić identifkatory zarezerwowane przez framework (żeby tych > nie zamieniać na losowe - generowane przez obfuskator). Przy czy istotne > jest rozróżnienie zmiennych globalnych i lokalnych we frameworku, bo > globalne nie mogą być zastępowane w generowanym kodzie PHP (jeśli > framework zawiera np. tablicę globalną $config to wygenerowanym kodzie > ta nazwa musi być zarezerowana ni zamieniana na losowy, generowany ciąg > znaków). Powstaje więc pytanie jak przy parsowaniu frameworka (robię to > wyrażeniami regularnymi) odróżnić zmienne globalne od lokalnych. Nie > każda zmienna globalna $x musi mieć deklarację "global $x;" w jakieś > funkcji frameworka, więc jest to problem. > Jeśli w aplikacji PHP występuje użycie zmiennej globalnej frameworka o > nazwie $config to nie powinno ono być obfuskowane, a jeśli występuje > użycie zmiennej nieglobalnej (lokalnej lub paramtru) o nazwie $x, to to > powinno być obfuskowane. Czy mój problem ma w ogóle rozwiązanie?
pytanie do znawców frameworków PHP
Author: RM
Date: Wed, 12 Aug 2020 15:14
Date: Wed, 12 Aug 2020 15:14
10 lines
1418 bytes
1418 bytes
Mój obfuskator (testowany na razie tylko z CodeIgniter) nie obfuskuje
zmiennych w widokach, ponieważ do tych zmiennych są przekazywane
parametry widoków z kontrolerów. Wiem, że w Yii wywołanie widoku wygląda
podobnie jak w CI:
$this->render('index', array('models' => $models, 'pages' => $pages,
'sort' => $sort));
więc mam pytanie: czy można przyjąć dla wszystkich frameworków
założenie, że zmiennych w widokach nie obfuskujemy.
Re: pytanie do znawców frameworków PHP
Author: RM
Date: Wed, 12 Aug 2020 15:19
Date: Wed, 12 Aug 2020 15:19
14 lines
1612 bytes
1612 bytes
W dniu 12.08.2020 o 17:14, RM pisze:
> Mój obfuskator (testowany na razie tylko z CodeIgniter) nie obfuskuje
> zmiennych w widokach, ponieważ do tych zmiennych są przekazywane
> parametry widoków z kontrolerów. Wiem, że w Yii wywołanie widoku wygląda
> podobnie jak w CI:
>
> $this->render('index', array('models' => $models, 'pages' =>
> $pages, 'sort' => $sort));
>
> więc mam pytanie: czy można przyjąć dla wszystkich frameworków
> założenie, że zmiennych w widokach nie obfuskujemy.
>
Tzn. mój obfuskator ma zaciemniać kod aplikacji typu MVC.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads