Autor Wątek: Ochrona przed reverse engineeringiem  (Przeczytany 5247 razy)

Offline Strachu

  • Użytkownik

# Styczeń 29, 2008, 11:05:02
Witam, jestem tu nowy.
Temat nie pasował do innych działów, więc napisałem go tutaj.

Czy może ktoś zna jakieś darmowe programy lub sposoby w c++ do obrony przed reverse engineeringiem, które utrudniają reverse engineering programów?

Szukałem w google, ale wszystkie programy, które znalazłem były płatne.


Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Solgar

  • Użytkownik

# Styczeń 29, 2008, 14:24:21
Z tego co się orientuje, to inżynieria wsteczna polega na obserwacji zachowań aplikacji i na ich podstawie pisanie wlasnego programu od podstaw. Przed tym raczej sie chyba nie da uchronić, za żadne pieniądze ;)

Offline Strachu

  • Użytkownik

# Styczeń 29, 2008, 14:57:14
Chodziło mi o zabezpieczenie programu przed disasembleracją lub dekompilacją.(uniemożliwienie tego lub utrudnienie)

Jak już pisałem znalazłem do tego jakieś programy na google, ale wszystkie były płatne, a ja szukam darmowego rozwiązania.

Offline lcf

  • Użytkownik

# Styczeń 29, 2008, 15:04:01
Tutaj masz kilka tricków, może coś się przyda: klik.

Offline Strachu

  • Użytkownik

# Styczeń 30, 2008, 12:20:44
Dzięki lcf, na pewno z tych tricków skorzystam, jak by ktoś znał jeszcze jakieś tricki lub programy, które są darmowe, proszę o podanie linka.

Offline mINA87

  • Użytkownik

# Styczeń 30, 2008, 12:38:34
Nic lepszego nie wymyślisz :] Najpewniejszy sposób to napisanie mocno zobfuscowanej wirtualnej maszyny. Pod tą wirtualną maszynkę kompilowalibyśmy kod asma x86 do jakiegoś byte code'u. Taki byte code powinien być jak najmniej deterministyczny (na oko obserwującego np. raz 1 operacja to 0x59, nastepnym razem 0x60 0x71), zaśmiecony jakimiś pierdołami i dodatkowo kod wirtualnej maszyny też powinien być bardzo ale to bardzo nieczytelny, najlepiej polimorficzny.
Odpalenie sterowników w trybie jądra, które blokowałyby debuggery itp też może uprzykrzyć życie (np. starforce nie przepuszcza nawet ProcessExplorer'a :F).
Takie rozwiąznaia zastosowano np. w StarForce'ie czy do zabezpieczenia Cubase'a (tam dodatkowo wykorzystano klucz sprzętowy - też fajna sprawa, bo można zrobić kluczyk sprzętowy który byłby integralną częścią wirtualnej maszyny i coś tam by deszyfrował :]).
Jak widać dosyć hardcorowe podejścia, ale dzięki nim najlepsi crackerzy na scenie siedzieli i siedzą sporo czasu nad najnowszymi zabezpieczeniami.
I pamiętaj - jak chcesz napisać coś dobrego to nigdy w życiu nie myśl o gotowych rozwiązaniach tylko wymyśl coś swojego - uzyskasz 2x lepsze efekty i sprawisz więcej frajdy dobrym crackerom :)

Offline yarpen

  • Użytkownik

# Styczeń 30, 2008, 12:48:28
Pomysl z wirtualna maszyna jest chyba fakytycznie najpopularniejszy. Tak robi tez Tages, z f-kcji majacej kilkanascie instrukcji powstaje kobyla na kilkadziesiat ekranow (robi to samo), powodzenia w szukaniu czegos. Problem taki, ze o ile zabezpiecza to przed rev engineeringiem, to jako zabezpieczenie antypirackie sie nie sprawdza zupelnie, bo obchodzi sie to inaczej :) No i spowalnia dana f-kcje.

Offline mINA87

  • Użytkownik

# Styczeń 30, 2008, 13:02:33
Pomysl z wirtualna maszyna jest chyba fakytycznie najpopularniejszy. Tak robi tez Tages, z f-kcji majacej kilkanascie instrukcji powstaje kobyla na kilkadziesiat ekranow (robi to samo), powodzenia w szukaniu czegos. Problem taki, ze o ile zabezpiecza to przed rev engineeringiem, to jako zabezpieczenie antypirackie sie nie sprawdza zupelnie, bo obchodzi sie to inaczej :) No i spowalnia dana f-kcje.
Dlatego takie zabezpieczenia są najlepsze do aplikacji użytkowych i np. CuBase z tego korzysta. Tam fajnie zrobili w bambuko twórców zabezpieczeń, bo napisali emulator dongle'a USB :P
Co do zabezpieczeń antypirackich to Tages ssie, bo wierny obraz zrobić łatwo, a zabezpieczenie przede wszystkim sprawdza czy napęd jest SCSI czy IDE, a ostatnio pojawiają się emulatory symulujące pracę pod magistralą IDE :)
Zabezpieczenie antypirackie to naprawdę ciężka sprawa i najlepiej sprawuje się tutaj chyba Starforce, bada on chyba kąty rozmieszczenia danych - takie były teorie, nie śledziłem jak stoi rozgryzanie tego zabezpieczenia :)

Offline Strachu

  • Użytkownik

# Styczeń 30, 2008, 13:25:57
Wszystkie wcześniej podane tricki są w Asemblerze, niestety ja z asemblera nic nie umiem, zna ktoś może jakieś tricki, ale w C++?

Offline shyha

  • Użytkownik
    • Shyha@Flickr

# Styczeń 30, 2008, 13:30:24
Wszystkie wcześniej podane tricki są w Asemblerze, niestety ja z asemblera nic nie umiem, zna ktoś może jakieś tricki, ale w C++?

No niestety, do tego znajomosc asemblera (tudziez ogolnie binarki) jest koniecznoscia...

Offline Strachu

  • Użytkownik

# Styczeń 30, 2008, 13:37:14
No niestety, do tego znajomosc asemblera (tudziez ogolnie binarki) jest koniecznoscia...

To niestety muszę się obejść bez zabezpieczania programu przed reverse engineeringiem. :-\

Dziękuję wszystkim za pomoc.

Offline mINA87

  • Użytkownik

# Styczeń 30, 2008, 20:20:21
Ewentualnie spakuj UPX'em i/lub dorzuć jakiś obfuscating C++ i/lub gotowego kodu. Coś do tego powinno być. Jeśli wybierzesz wystarczająco egzotyczny format pakwoania, to większość amerów i tak powinno to zniechęcić.

Offline Esidar

  • Użytkownik

# Styczeń 30, 2008, 21:24:55
Zabezpieczenie antypirackie to naprawdę ciężka sprawa i najlepiej sprawuje się tutaj chyba Starforce, bada on chyba kąty rozmieszczenia danych - takie były teorie, nie śledziłem jak stoi rozgryzanie tego zabezpieczenia :)

Starforce od dawna jest łamany :) Co prawda każda gra z tym zabezpieczeniem była łamana średnio dłużej niż z innymi zabezpieczeniami, ale każda gra i tak wcześniej czy później była złamana. Na szczeście (z zyskiem również dla tych co kupują oryginalne wersje) ze Starforca rezygnują już wydawcy i coraz rzadziej jest używany. Starforce miesza za bardzo w systemie i wątpliwa to przyjemność z grania w jakąś grę w zamian za zupełne rozsypanie sobie systemu.


Offline misioslaw

  • Użytkownik
    • www.asmforce.eu

# Marzec 18, 2008, 12:07:50
I pamiętaj - jak chcesz napisać coś dobrego to nigdy w życiu nie myśl o gotowych rozwiązaniach tylko wymyśl coś swojego - uzyskasz 2x lepsze efekty i sprawisz więcej frajdy dobrym crackerom :)
Święte słowa. Wszelkie zabezpieczenia wbudowane bezpośrednio w program są skuteczniejsze niż gotowe tzw. "wrappery" których można pozbyć sie stosunkowo łatwo. Przykład pierwszy z wierzchu "The Sims 2" SafeDisc 3 został złamany szybciutko i piracik powędrował w sieć. Tylko że w grze nie dało sie nic budować :D
Jeśli chodzi o zaśmiecanie kodu to dosyć dobrze to zniechęca.

« Ostatnia zmiana: Marzec 18, 2008, 12:10:28 wysłana przez misioslaw »

Offline Elwis

  • Użytkownik

# Marzec 18, 2008, 12:26:17
Najlepsza ochrona przed deasemblacją to otwarcie źródeł ;) Nie wiem co to za mania na zamknięte źródła i ochronę ich jak tylko się da, jakbyś miał na tym cokolwiek stracić :)

A na reverse engineering nie ma rady ;)