CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Zabezpieczenie EXE przed edycją lub odczytem

Zabezpieczenie EXE przed edycją lub odczytem

dział ogólny

Re: Zabezpieczenie EXE przed edycją lub odczytem

Nowy postprzez polymorphism » poniedziałek, 30 lipca 2012, 10:38

Aha, czyli jest to po prostu weryfikacja autorstwa. Tylko co może policja w przypadku kradzieży oprogramowania przez Chińczyków? Minus takiego rozwiązania jest też taki, że jak pirat potraktuje Twój program jakimś pakerem, to nic nie zweryfikujesz.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Zabezpieczenie EXE przed edycją lub odczytem

Nowy postprzez Corvis » poniedziałek, 30 lipca 2012, 11:46

Kurde ale coś trzeba zrobić bo za darmo pracy nie warto oddawać ;) Może na 100% się nie da ale można utrudnić na maxa
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows 7Chrome

Re: Zabezpieczenie EXE przed edycją lub odczytem

Nowy postprzez polymorphism » poniedziałek, 30 lipca 2012, 12:09

Napisałem, co możesz zrobić. Oczywiście dobrze jest poczytać o sposobach zabezpieczania aplikacji przed modyfikacjami, bo takie wymyślanie sposobów bez podstawowej wiedzy na ten temat jest z góry skazane na niepowodzenie.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Zabezpieczenie EXE przed edycją lub odczytem

Nowy postprzez Cyfrowy Baron » poniedziałek, 30 lipca 2012, 15:54

Corvis napisał(a):Policja albo prokuratura w celu udowodnienia oszustwa i złodziejstwa


Takie przestępstwa nie są ścigane z urzędu. By wymiar sprawiedliwości się tym zajął musisz wskazać podejrzanego. Gdyby to było takie proste, to piractwo dawno zostałoby ukrócone, a sam wiesz jak z tym jest i jak mało skuteczne są wszelkiej maści zabezpieczenia. Jeżeli za program weźmie się doświadczony cracker to żadne zabezpieczenia jakie wprowadzisz nie pomogą. Jeżeli programu będą używać zwykli użytkownicy to wystarczy to co zaproponował polymorphism, czyli sprawdzanie sumy kontrolnej pliku.

Hash File: SHA-1, HAVAL, MD2, MD5, SHA-256, SHA-384, SHA-512
Chilkat C/C++ Libraries for Embarcadero® C++ Builder®
C++ Builder XE2:chilkat-9.3.1-bcc-xe2.zip

Jeżeli użyjesz powyższej biblioteki i sklecisz jakiś użyteczny kod to mam prośby byś udostępnił ten kod na tym forum.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Zabezpieczenie EXE przed edycją lub odczytem

Nowy postprzez Darek_C++ » poniedziałek, 30 lipca 2012, 23:34

Cyfrowy Baron napisał(a):Sprawdzanie sumy kontrolnej zabezpieczy program przed modyfikacją zasobów, ale nie przed ich podejrzeniem.?
To jak to w praktyce zrobić ?
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: Zabezpieczenie EXE przed edycją lub odczytem

Nowy postprzez Cyfrowy Baron » wtorek, 31 lipca 2012, 04:59

Umieszczasz w aplikacji funkcję, która sprawdza sumę kontrolną. Trzeba ją gdzieś zapisać i tutaj może się przydać mój pomysł z archiwum ZIP o którym wspomniałem wcześniej. Przy każdym uruchomieniu program sprawdza swoją sumę kontrolną i porównuje ją z tą zapisaną.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Zabezpieczenie EXE przed edycją lub odczytem

Nowy postprzez polymorphism » wtorek, 31 lipca 2012, 09:49

Ja bym nie zapisywał sumy kontrolnej w pliku, zrobiłbym ją częścią kodu, jako stałą.

Tu masz artykuł, który powinien Cię zainteresować:
http://www.codeproject.com/Articles/29469/Introduction-Into-Windows-Anti-Debugging
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Zabezpieczenie EXE przed edycją lub odczytem

Nowy postprzez Darek_C++ » wtorek, 31 lipca 2012, 11:04

polymorphism napisał(a):Ja bym nie zapisywał sumy kontrolnej w pliku, zrobiłbym ją częścią kodu, jako stałą.
Jak to zrobić w praktyce, bo suma kontrolna kojarzy mi się z wielkością pliku, a ten podczas kompilacji jest nieznany. Pytam, bo ten temat aktualnie jest też dla mnie ważny :)
--
W jakim zdarzeniu umieścić funkcję IsDebuggerPresent() podczas tworzenia formy FormCreate ?
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: Zabezpieczenie EXE przed edycją lub odczytem

Nowy postprzez polymorphism » wtorek, 31 lipca 2012, 12:23

Jeśli zasoby trzymasz w oddzielnym pliku DLL, to przed kompilacją aplikacji odpalasz inna aplikację, która wylicza sumą kontrolną i generuje np. plik nagłówkowy z definicją stałej. Programik musisz napisać sobie oczywiście sam ;) Cały proces możesz zautomatyzować dodając odpowiednią komendę wywołania aplikacji zewnętrznej w opcji "prebuild events" (tak to się nazywa w VC) głównego projektu. Dzięki temu, gdy będziesz kompilował projekt, wpierw zostanie wywołana aplikacja wyliczająca sumę.

W jakim zdarzeniu umieścić funkcję IsDebuggerPresent() podczas tworzenia formy FormCreate ?

Ja dałbym w jakimś timerze, ponieważ debugger można podpiąć w trakcie działania aplikacji, zatem sprawdzenie przy uruchomieniu aplikacji może nic nie dać. Dobrze też dać wywołanie w przypadkowych miejscach, tak żeby zablokowanie jednego wywołania nie załatwiło sprawy. W sumie też dobrze by było kod sprawdzający inline'ować, bo dość łatwo będzie znaleźć wszystkie wywołania IsDebuggerPresent:
KOD cpp:     UKRYJ  
#ifdef NDEBUG
#       define CHECK_DEBUGGER(code) \
                char IsDbgPresent = 0; \
                _asm { \
                _asm mov eax, fs:[30h] \
                _asm mov al, [eax + 2h] \
                _asm mov IsDbgPresent, al \
                } \
                if(IsDbgPresent) code;

#else
#       define CHECK_DEBUGGER(code)  
#endif


KOD cpp:     UKRYJ  
void foo()
{
        CHECK_DEBUGGER(return); // wyskok z funkcji lub...
        CHECK_DEBUGGER(ExitProcess(0)); // zamknięcie aplikacji
        ...
}

To tylko trochę utrudni złamanie blokady, bo zawsze można przeszukać kod w poszukiwaniu sekwencji op-kodów. No ale lepsze to niż nic ;)
C++ Reference - opis wszystkich klas STL-a i funkcji C.

Za ten post autor polymorphism otrzymał podziękowanie od:
Darek_C++
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Zabezpieczenie EXE przed edycją lub odczytem

Nowy postprzez Darek_C++ » wtorek, 31 lipca 2012, 13:07

Zapytam inaczej, bo w tym temacie jestem niestety zielony - powiedzmy program w chwilo startu łączy się z serwerem i pobiera adres która zwraca TAK, NIE w zależności od tego program jest odblokowany lub zablokowany.

Pytanie brzmi czy można skompilowany EXE jakoś otworzyć i np zmienić/zmodyfikować w nim String NIE na TAK i potem EXE powtórnie zapisać czyli znosząc tą prostą blokadę ?
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: Zabezpieczenie EXE przed edycją lub odczytem

Nowy postprzez polymorphism » wtorek, 31 lipca 2012, 13:25

Oczywiście ;) To, o czym teraz pisaliśmy, dotyczyło tylko blokowania możliwości debugowania aplikacji. To nie chroni przed dekompilacją i analizą "na sucho". Dlatego stosuje się też jakieś zaciemniacze.


p.s. gwoli ścisłości, nie jestem jakimś tam specem od zabezpieczeń ani jakimś pr0 crackerem, moja wiedza na ten temat jest raczej mikra. Przekazuje to, co pamiętam z czasów, kiedy bawiłem się w te klocki (było to daaawno).

Nieco zmodyfikowałem poprzedni kod.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Zabezpieczenie EXE przed edycją lub odczytem

Nowy postprzez Cyfrowy Baron » wtorek, 31 lipca 2012, 15:10

Plik to tylko plik, a to że EXE niczego nie zmienia, zawsze można go podejrzeć i zedytować, a zasoby edytuje się naprawdę łatwo.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Zabezpieczenie EXE przed edycją lub odczytem

Nowy postprzez Darek_C++ » wtorek, 31 lipca 2012, 16:29

Beeee myślałem, że exe binarnego nie idzie tak "łatwo" zmienić :(
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Poprzednia strona

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 1 gość