NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.

Diskuze: Obfuskace a vyrobení hromady zbytečného kódu

V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
xmms
Člen
Avatar
xmms:21.9.2019 22:16

Potřeboval bych vyrobit obrovskou hromadu výpočetního kódu, který jinak nic nedělá, a hodněkrát ho zopakovat a prošpekovat jím celý program. A dále vyrobit antidebugovací instrukce, které generují skákání doprostřed instrukcí, aby v assembleru nebyl vidět kód, který se bude provádět.

Zkusil jsem:

#include <Windows.h>
#include <chrono>

//tyhle detaily jsou v jinem souboru
extern int secretvariable;
void burncpu();
void burngpu();
void explodemonitor();
void formathdd();
bool checklicense();
void TAJNYVYPOCETNEKDEHLUBOKO();
void crashsystem();


//TODO tohle potrebuju udelat obrovsky a slozity, tady se vygenerujou megabajty vedeckych a slozitych vypoctu, nemajicich zadny vliv na fungovani programu
int f;
#define hromadakodu f=90; f*=45; for(int i=9;i<98765;i++){int g=90;g+=3;g++;}

#define velkahromada hromadakodu hromadakodu hromadakodu hromadakodu hromadakodu hromadakodu hromadakodu hromadakodu hromadakodu hromadakodu \
hromadakodu hromadakodu hromadakodu hromadakodu hromadakodu hromadakodu hromadakodu hromadakodu hromadakodu hromadakodu hromadakodu hromadakodu

#define obrovskahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada \
velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada \
velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada \
velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada \
velkahromada velkahromada velkahromada velkahromada TAJNYVYPOCETNEKDEHLUBOKO(); velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada \
velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada \
velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada \
velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada velkahromada

int main() {

        auto start = std::chrono::system_clock::now();

        obrovskahromada

        auto end = std::chrono::system_clock::now();
        auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
        if (IsDebuggerPresent || elapsed.count() > 10 || checklicense() == false)

        {
                secretvariable = 0;
                formathdd();
                burncpu();
                burngpu();
                explodemonitor();
                crashsystem();
        }

        return 0;
}

Chci docílit: Chci chránit svůj program před analýzou kódu, ale aby zdrojáky zůstaly pěkně přehledné. Prostě vložím na hodně míst svoji definici obrovskahromada a program bude v assembleru vypadat strašně. Máte nějaké typy na generátor složitých výpočtů? Tzn. stávající #define hromadakodu předefinovat nějakým velkým výpočtem.

 
Odpovědět
21.9.2019 22:16
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na xmms
Martin Dráb:22.9.2019 11:27

Pokud kompiluješ Visual Studiem, zajímavá mohou být nastavení překladače /Gh a /GH.
https://docs.microsoft.com/…ook-function?…

Pokud potřebuješ spíše již hotové řešení, můžeš zkusit Code Virtualizer či Themida.
https://www.oreans.com/products.php

Není to ale zadarmo. Pokud vím, tak poslední verze těchto produktů ale zatím nikdo (veřejně) nedokázal prolomit.

Nahoru Odpovědět
22.9.2019 11:27
2 + 2 = 5 for extremely large values of 2
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.