Obfuscator C# - jaki polecacie?

Obfuscator C# - jaki polecacie?
mr_jaro
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Grudziądz/Bydgoszcz
  • Postów:5300
1

Jak w temacie do tej pory korzystałem z confusera ale z tego co wiem znalazł się jeden z drugim który pogrzebał i złamał moją apke, więc chce ją zabezpieczyć czymś innym/lepszym. Od razu podam, że nie zależy mi na tym aby była darmowa ale też jeśli ktoś coś ma to jednak proszę nie wypisywać mi tych po 200$ za licke bo to trochę za dużo tym bardziej, że chodzi o zabezpieczenie jednej apki którą robię hobbystycznie po godzinach.


It's All About the Game.
edytowany 1x, ostatnio: DibbyDum
mr_jaro
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Grudziądz/Bydgoszcz
  • Postów:5300
0

Serio nikt z was nie zabezpiecza kodu? O.o


It's All About the Game.
datdata
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 7 lat
  • Postów:957
4

Trochę żart/off-topic, ale zawsze możecie zatrudnić zewnętrzną firmę z Indii.


"A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects." Robert Heinlein.
mr_jaro
Nie bo aplikacja się dynamicznie zmienia a po nich to i ja bym nie doszedł o co chodzi :D
AN
  • Rejestracja:prawie 19 lat
  • Ostatnio:około godziny
0

Na tej liście są nazwy różnych obfuscatorów i program, który ponoć deobfuscuje http://de4dot.com/

CF
  • Rejestracja:około 8 lat
  • Ostatnio:prawie 8 lat
  • Postów:55
0

U mnie w firmie używamy .NET Reactor i jak do tej pory nie mieliśmy żadnych problemów (a przynajmniej nie jesteśmy ich świadomi :D). Licencja kosztuje z tego co widzę niecałe 200$ bo 179$ więc w sumie spełnia kryteria :P


Bartosz Wójcik
Ciekawe czy jesteście świadomi ww. de4dot (chociaż do Ractora widziałem wiele innych narzędzi)? A jeśli tak, to nie wiem po co marnujecie pieniądze :)
neves
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 17 godzin
  • Lokalizacja:Kraków
  • Postów:1114
0

confuser należy do jednych z najlepszych, wiec jak komuś się chciało złamać nim zabezpieczona aplikacje to pewnie sobie poradzi także z innymi ...


Bartosz Wójcik
Nie należy, ani Confuser, ani ConfuserEx, dostępne są uniwersalne deobfuscatory, a samo ich używanie sprawi, że 95% antywirusów oznaczy twoją aplikację jako potencjalnie niebezpieczną (wrzuć sobie coś po obfuskacji na VirusTotal), choćby było to zwykłe Hello World, wynika to z faktu, że masa malware bywała nim zabezpieczana, no bo za darmo.
neves
Jeśli program jest malutki, i ddlka ma mniej niż kilkaset KB, to zgadza się, są problemy z antywirusami, natomiast przy większych dllkach i podpisanych certyfikatem nie ma żadnych i z powodzeniem jest stosowany na produkcji w firmie w której pracuje.
Bartosz Wójcik
Rzucisz wynikiem skanowania z VT na potwierdzenie tych słów?
mr_jaro
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Grudziądz/Bydgoszcz
  • Postów:5300
0
neves napisał(a):

confuser należy do jednych z najlepszych, wiec jak komuś się chciało złamać nim zabezpieczona aplikacje to pewnie sobie poradzi także z innymi ...

Na stronie podają, że ostatnia wersja wyszła 2012, w necie znalazłem co najmniej 3 aplikacje które cofają zmiany confusera.


It's All About the Game.
0

nie da się cofnąć zmian obfuscatora bo jego główne zadanie to zmiana nazw parametrów, metod itp na nic nie mówiące - żeby to cofnąć trzeba inteligentnego bytu który odgadnie działanie kodu
nie trzeba też jakiegoś wymyślnego obfuscatora - powyższe zmiany nawet bez dodatkowych utrudnień wystarczająco zniechęcają do analizy kodu, no chyba że jest w nim zaszyty niezwykle cenny i nieopisany nigdzie algorytm w co wątpię ;)
a tak w ogóle to trzeba mieć wysokie mniemanie o sobie żeby myśleć że komuś się będzie chciało zaglądać do Twojego kodu; aplikacje po kilkadziesiąt tysięcy od licencji są wypuszczane bez żadnej obfuskacji - to nie kod jest cenny tylko jego utrzymanie

Bartosz Wójcik
Nazwy można ładnie zmienić np. na var_1, var_2, var_3 i już lepiej się czyta kod, akurat zmiana nazw zmiennych czy funkcji to najmniej uciążliwa technika stosowana w obfuscatorach dla .net. Aplikacje po kilkadziesiąt tysięcy bez żadnej obfuskacji pod .net są regularnie dekompilowane, a ich klony pojawiają się np. na rynku chińskim.
0
Pijany Lew napisał(a):

a tak w ogóle to trzeba mieć wysokie mniemanie o sobie żeby myśleć że komuś się będzie chciało zaglądać do Twojego kodu

albo po prostu się go wstydzić ;)

mr_jaro
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Grudziądz/Bydgoszcz
  • Postów:5300
0
Pijany Lew napisał(a):
Pijany Lew napisał(a):

a tak w ogóle to trzeba mieć wysokie mniemanie o sobie żeby myśleć że komuś się będzie chciało zaglądać do Twojego kodu

albo po prostu się go wstydzić ;)

Powiem tak, jest to kod antycheata nad którym pracuje łącznie już 3 lata po godzinach i uwierz są osoby które zrobią wszystko by to obejść szczególnie że za zwycięstwa są odpowiednie nagrody.

Nigdzie nie opisanego algorytmu tam nie ma ale są wrażliwe rzeczy typu zaszyfrowana informacja wysyłana na serwer wrazie wykrytych anomalii w logach danej osoby. Oraz same algorytmy zabezpieczające które z chęcią by wyłączyły dane osoby. Pewnie się spytasz skąd wiem, ze działa u kogoś na komputerze, a no stąd że ta apka na bieżąco śle zaszyfrowane dane na serwer.


It's All About the Game.
edytowany 1x, ostatnio: mr_jaro
T9
Nie wiem jaki to nakład pracy bo 3 lata to trochę dużo ale, zawsze możesz przepisać krytyczne elementy do c/c++ i wczytać jako bibliotekę. lub przesyłać wrażliwe algorytmy po uruchomieniu aplikacji i je kompilować/interpretować. Zamienie if'a na if( func<bool>) a kogoś na pewno zniechęci.
Bartosz Wójcik
I zrobiłeś to w C#? Powinieneś wiedzieć, że to się dobrze nie skończy :)
LG
Jak ktoś będzie chciał to i tak algorytm wyciągnie. Dziedzina RE ma sporo do zaoferowania.
mr_jaro
@Bartosz Wójcik: tak w C# Jak się głownie siedzi w innej części naszej branży, a na desktopy robi hobbystycznie to robi się w tym w czym się już zna i robi się w miarę przyjemnie :) Opcja przepisania części na c++ wchodzi w gre ale to i tak nic nie zmieni bo jak ktoś będzie chciał to wyłączy komunikację z tą biblioteką i po zabawie.
02
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 8 lat
  • Postów:1176
0

Jak zrobią wszystko, żeby go obejść to go obejdą ;). Obfuskacja w C# jest mało efektywna, sprawa trochę lepiej wygląda przy natywnych aplikacjach;
Zawsze możesz spędzisz kolejne 3 lata na pisanie swojego obfuskatora ;)

edytowany 1x, ostatnio: 0x200x20
0

Co to za gra?

neves
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 17 godzin
  • Lokalizacja:Kraków
  • Postów:1114
0
mr_jaro napisał(a):
neves napisał(a):

confuser należy do jednych z najlepszych, wiec jak komuś się chciało złamać nim zabezpieczona aplikacje to pewnie sobie poradzi także z innymi ...

Na stronie podają, że ostatnia wersja wyszła 2012, w necie znalazłem co najmniej 3 aplikacje które cofają zmiany confusera.

ja tu widzę ostatnią wersję z zeszłego roku:
https://github.com/yck1509/ConfuserEx/releases


0
mr_jaro napisał(a):

Serio nikt z was nie zabezpiecza kodu? O.o

A jaki to ma sens?

Jedyne co możesz zrobić to zaciemnić nazwy zmiennych, metod, klas ale jak komuś będzie zależało to i tak rozpracuje. Do tego dochodzą problemy z debugowaniem błędów.

Inne metody ingerujące w kod, zmniejszając wydajność oraz narażają na trudne do wykrycia błędy. JIT ma nieraz duże problemy z obsługą takich bubli. W aplikacjach biznesowych nie do przyjęcia.

Dla hardcorów zostają maszyny wirtualne z wbudowanymi mechanizmami kryptograficznymi ale one zawsze są parę lat za .NET i nie są aż tak dobre i wydajne. W Javie jest parę fajnych maszyn wirtualnych ale żadna nie skupia się na zaciemnianiu kodu.

Z tego, co zauważyłem to bardzo mało firm stosuje obsfukację. Głównie robią to firmy piszące aplikacje dla finansów ale tylko cześć kodu jest zaciemniania i tylko przy użyciu podmiany nazw. Resztę można śmiało dekomponować i analizować. Zdziwilibyście ile ogromnych systemów informatycznych jest pisanych w ojczystych językach (tzn. nazwy zmiennych, metod, klas).

Bartosz Wójcik
Jeśli sam byś miał firmę, a nie był szeregowym pracownikiem, który ma wszystko gdzieś, i regularnie by Ci łamali, kradli i klonowali oprogramowanie to myślę, że twój tok myślenia byłby nieco inny.
mr_jaro
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Grudziądz/Bydgoszcz
  • Postów:5300
1
dotnerd napisał(a):

Zdziwilibyście ile ogromnych systemów informatycznych jest pisanych w ojczystych językach (tzn. nazwy zmiennych, metod, klas).

To serio jest się czym chwalić. Świadczy to "profesjonalizmie" tychże firm.


It's All About the Game.
GP
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad rok
  • Postów:34
0

Odświeżę temat - czy w dzisiejszych czasach, kiedy na githubie istnieje de4dot, jest w ogóle jakiś większy sens zaciemniania kodu?

mr_jaro
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Grudziądz/Bydgoszcz
  • Postów:5300
0

Tak, ale płatnymi porządnymi apkami.


It's All About the Game.
GP
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad rok
  • Postów:34
0
mr_jaro napisał(a):

Tak, ale płatnymi porządnymi apkami.

A które są te porządne? Pytam poważnie. Bo na razie to wiem, że wtopiłbym kasę w Reactora (co prawda wersja trial, ale de4dot nawet się nie zająknął).

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 4 godziny
  • Lokalizacja:Wrocław
0

Najlepiej zatrudnić paru seniorów z doświadczeniem 10 x jeden rok.


Po dopracowaniu rozwiązania każdy będzie mógł założyć własny drzewiasty wątek.
GP
Pytam poważnie.
somekind
Poważne odpowiedzi padły tu w 2017 roku.
B1
  • Rejestracja:około 5 lat
  • Ostatnio:około 5 lat
  • Postów:1
0

Dajcie to ambitnemu seniorowi który po 6 latach pracy w jednej firmie, dalej uważa że upychanie 20 repozytoriów w kontrolerze jest ok.

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)