|
След като знаем че можем да сменим местата на името на масива и индекса, можем да прилагаме това в пример като този:
CODE
Ще бъде изведен низа, който всъщност е индекс в масив c, който даже не е деклариран като масив. Кодът е слабо казано грозничък и неясен, но това е целта, когато правим obfuscation ... И за да стане още по-забъркано да разгледаме един най-обикновен if оператор ... CODE
Горния код е ясен за всеки, но да си предстовим, че се налага просто да шашнем някой начинаещ (например учителка по информатика). Пишем следния еквивалент ... CODE
Еквивалент е, защото в C++ ако до оператор && имаме израз оценен на FALSE, всичко останало не се изпълнява, както и ако до оператор || изразът е с оценка TRUE, останалото също се пренебрегва. Т.е. свеждаме if( условие ) { ОперацияПриИзпълненоУсловие; } else { ОперацияПриНеИзпълненоУсловие; } към if( условие && ОперацияПриИзпълненоУсловие || ОперацияПриНеИзпълненоУсловие ); На един ред, както ако ползваме ?: но него всеки го знае и ефекта ще е друг. Да се задълбочим сега върху оператора ‘==’. Как да го маскираме за леймърите ? Тук ще дам само пример, а обяснението оставям за книжките по цифрова електроника е компаратори. CODE
има същия ефект като CODE
просто сравняваме с побитов XOR (excluding OR) оператор. За край вече можем да трансформираме елементарен и ясен код като CODE
към далеч по-объркващото ... CODE
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||








