Názvy funkcí jsou vidět v hotovém EXE

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod xmms 10. 11. 2017 14:32

Dělám C# aplikaci ve VS2010 a vidím, že zkompilované EXE jako release má viditelné textové názvy funkcí, viz obrázek. Je tam vidět i název projektu. V první řadě nechápu, proč to tam překladač dává a hlavně to tam nechci, to pro spuštění strojového kódu je zbytečné. Bůhvíco tam ten kompilátor dává dalšího, ani o tom nevím. Třeba tam bude někde zakódováno výrobní číslo mého počítače...

Co tedy s tím?


Console.png
Console2.png
Vždycky bude někdo lepší než ty. A krysám se nikdy nevyrovnáš. Nikdy!
xmms
Junior
Uživatelský avatar

Odeslat příspěvekod satikcz 10. 11. 2017 14:56

Dava to tam, protoze vetsina jazyku vsechny stringy uklada primo tak jak jsou, protoze je to nejrychlejsi/nejjednodussi je pak nacist.

C# se uklada v bajtkodu, kde je v podstate celej zdrojak ulozenej.

Vyhoda je, ze kdyz dojde k chybe, muze ti vypsat treba stacktrace.

Pokud to chces skryt, muzes exac treba zabalit pres program UPX - bude mensi a tyhle textovy veci nepujdou bez rozbaleni precist, pripadne muzes pouzit nejaky obfuskator / cryptor, ale vsechny tyhle veci jdou "rozlousknout", je to jen otazkou casu a jestli dotycnymu bude stat za to venovat tolik usili na rozlousknuti.

C C++ uz je to o kousek slozitejsi, tam uz zpatky C++ kod obvykle nedostanes, ale muzes porad na ten kod koukat v assembleru a udelat to samy co v pripade c#, jen to klade vetsi naroky na toho, kdo to chce rozlosuknout.
3x AOC AG271QG (2560x1440, IPS, 165Hz, GSync), ASUS Strix RTX3090 OC, Intel Core i7 8700K@5GHz+EKWB L360, ASUS Maximus X, 32GB G.SKILL TridentZ@3466 MHz, ADATA SX8200 2TB + 1TB + Crucial BX 500 GB + Kingston UV400 1TB, Seasonic P-860 Platinum, FD Define S
satikcz
Junior
Uživatelský avatar

Odeslat příspěvekod xmms 10. 11. 2017 15:02

UPX nevyhovuje, ten se da snadno rozbalit. Ktery obfuskator zdarma je na to dobry? Idealne aby to slo nainstalovat do visual studia a primo kompilovat programy s nahodne vygenerovanymi nazvy.
Vždycky bude někdo lepší než ty. A krysám se nikdy nevyrovnáš. Nikdy!
xmms
Junior
Uživatelský avatar

Odeslat příspěvekod satikcz 10. 11. 2017 15:05

Zadny jsem nepouzival nikdy, takze s timhle konkretne neporadim lip nez google.

Ale muzu ti to pak zkusit unpacknout, uz jsem nejakej zacryptovanej c# soubor oteviral a nebylo to ani tak tezky, jak jsem cekal :D
3x AOC AG271QG (2560x1440, IPS, 165Hz, GSync), ASUS Strix RTX3090 OC, Intel Core i7 8700K@5GHz+EKWB L360, ASUS Maximus X, 32GB G.SKILL TridentZ@3466 MHz, ADATA SX8200 2TB + 1TB + Crucial BX 500 GB + Kingston UV400 1TB, Seasonic P-860 Platinum, FD Define S
satikcz
Junior
Uživatelský avatar

Odeslat příspěvekod xmms 10. 11. 2017 15:35

Nemusi to byt uplne dokonale slozity. Jen potrebuju, aby tam nazvy tech pojmenovanych veci nebyly videt na prvni pohled.
Vždycky bude někdo lepší než ty. A krysám se nikdy nevyrovnáš. Nikdy!
xmms
Junior
Uživatelský avatar

Odeslat příspěvekod satikcz 10. 11. 2017 15:51

na to staci to upx, to skoro nikdo nezna, i kdyz se zeptam kolegu programatoru, nebude to znat skoro nikdo :)
3x AOC AG271QG (2560x1440, IPS, 165Hz, GSync), ASUS Strix RTX3090 OC, Intel Core i7 8700K@5GHz+EKWB L360, ASUS Maximus X, 32GB G.SKILL TridentZ@3466 MHz, ADATA SX8200 2TB + 1TB + Crucial BX 500 GB + Kingston UV400 1TB, Seasonic P-860 Platinum, FD Define S
satikcz
Junior
Uživatelský avatar

Odeslat příspěvekod xmms 10. 11. 2017 16:07

A co kdybych to udelal v C++ .NET? To pujde taky snadno konvertovat do zdrojaku?

Nebo jaka je dobra moznost nakreslit jednoduchou formularovou aplikaci v C++ bez NETu? Nasel jsem jen moznost udelat CLR aplikaci a pridat do toho sources jako dialogy, messagebox apod, ale je dost pracny v tom kodovat nejake formulare a tlacitka.
Vždycky bude někdo lepší než ty. A krysám se nikdy nevyrovnáš. Nikdy!
xmms
Junior
Uživatelský avatar

Odeslat příspěvekod satikcz 10. 11. 2017 16:15

.net v c++ jsem nikdy nepouzil, tam to asi pujde prelozit jen zpatky na MSIL, ale nazvy funkci a objektu tam taky budou - kvuli reflexi, ta by jinak nefungovala, kdyz by neznala nazvy trid/funkci/memberu...
3x AOC AG271QG (2560x1440, IPS, 165Hz, GSync), ASUS Strix RTX3090 OC, Intel Core i7 8700K@5GHz+EKWB L360, ASUS Maximus X, 32GB G.SKILL TridentZ@3466 MHz, ADATA SX8200 2TB + 1TB + Crucial BX 500 GB + Kingston UV400 1TB, Seasonic P-860 Platinum, FD Define S
satikcz
Junior
Uživatelský avatar

Odeslat příspěvekod Nargon 10. 11. 2017 18:51

ať už použiješ jakýkoliv jazyk z .NET rodiny (C#, VB, C++, F#, apod) tak vždy výsledné zkompilované exe bude ona "polobinárka" v MSIL Bytecode, kde jsou právě obsažený všechny tyhle doplňující metainformace s názvy metod apod. Bez toho by například nefungovala oblast "System.Reflection", kde mimo jiné je právě možnost například spustit metodu zadáním "string" názvu, nebo ti to zjistí jaké všechny proměnné v nějakém objektu jsou apod.
Před časem jsem narazil na tohle: https://docs.microsoft.com/en-us/dotnet ... et-native/ je to nějaké kompilování do nativního formátu. Což by mělo být právě to co potřebuješ. Tj že to není přeloženo do MSIL, ale přímo do nativního kódu procesoru a tedy tam nejsou tyhle dodatečné informace. Ikdyž to vypadá že to má právě nějaké omezení, jako například že nebude fungovat reflexe apod. Ale nikdy jsem to nezkoumal, nevím jak se s tím zachází, takže si to nastuduj sám.
Desktop: Ryzen 7 1800X (3.95GHz, 1.35V), Asus Crosshair VI Hero, 16GB DDR4 Ram (3200MHz), 128GB SSD + 3TB HDD, Nvidia GTX 1080
Notebook: Asus UL50VT 15.6" (SU7300@1.7GHz, 4GB ram, 500GB HDD, Intel GMA 4500MHD + nVidia G210M, dlouha vydrz cca 7+ hod)
Nargon
Moderátor

Odeslat příspěvekod Wikan 10. 11. 2017 19:07

A co máš v aplikaci tak tajného, že ti to vadí?
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod xmms 11. 11. 2017 09:22

Zkousel jsem nejake dekompilatory a je v nich videt vsechno. To je jako kdybych rovnou zverejnil zdrojove kody. Ale to nema byt opensource.
Vždycky bude někdo lepší než ty. A krysám se nikdy nevyrovnáš. Nikdy!
xmms
Junior
Uživatelský avatar

Odeslat příspěvekod Just_jo 11. 11. 2017 10:03

Bohužel s tím se smiř - dokud to nenapíšeš v nativním C++ tak to jde vždy dekompilovat.
Problém jsem měl jen s dekompilací u Delphi - tam to bylo dekompilované jen částečně
Just_jo
Junior
Uživatelský avatar

Odeslat příspěvekod Wikan 11. 11. 2017 10:27

Vážně myslíš, že na tvé zdrojové kódy bude někdo zvědavý? Obfuskace se často neřeší ani u komerčního softwaru, který se prodává klidně i za 100 000 EUR. Co tam budeš mit tak speciálního, aby to stalo za podobnou ochranu?
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod xmms 11. 11. 2017 10:55

To je tajný. Asi zkusím ten .NET Native, až se v tom trochu zorientuju. Napadlo mě ještě udělat C++ MFC. Jak je těžké dekompilovat MFC?
Vždycky bude někdo lepší než ty. A krysám se nikdy nevyrovnáš. Nikdy!
xmms
Junior
Uživatelský avatar

Odeslat příspěvekod Wikan 11. 11. 2017 11:08

.net native ti v tomhle ohledu nijak nepomůže. Dekompilovat MFC je výrazně obtížnější, ale nikdy to nebude nemožné. Jediná možnost, jak naprosto chránit svůj program je, když ho nedáš z ruky a bude běžet např. na tvém serveru.
Wikan
Moderátor
Uživatelský avatar

Další stránka

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků