Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Pytanie] Zabezpieczenie Programu


Rekomendowane odpowiedzi

Opublikowano

Witam

 

Mam program zrobiony i chciałbym go zabezpieczyć możliwe jak najlepiej, aby działał na 1 komputerze. Tzn. osoba, która go ode mnie dostanie będzie mogła używać, ale jeśli wyśle innej to ta inna nie :). Zaznaczam, że bota otrzymywałoby więcej osób.

 

Jakieś pomysły na zabezpieczenie?

 

W Autoit.

Kocham mpcforum.pl!!!

18706.png

Opublikowano

hasło przed włączeniem programu ? generowane np przez daną date tylko ty bd wiedział jak ten kod otrzymać,bd on jednorazowy przy pierwszym włączeniu

liczylem na barce lecz ona niemogla wygrac.

Przez kibicow ktorzy przy rzutach roznych wolnych swiecili w messiego laserami

Opublikowano

Używasz RegRead...

 

Zaraz wkleję kod, muszę poszukać odpowiednich kluczy.

 

@EDIT:

$b = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductID")
$c = @error
MsgBox(0,$c,$

 

Masz. Ten element rejestru zawiera indywidualny klucz ID Windowsa...

 

Nie jest to boskie zabezpieczenie (PID można zmienić), ale większe to gra nie warta świeczki - i tak każdy program można szybko złamać za pomcą Reverse Engeeneringu.

Ta sygnatura jest pusta.

Opublikowano

Dzięki, wielkie dzięki.

 

Bardzo wielkie dzięki, przyda się.

 

 

@...

Jeszcze małe pytanko, w jaki sposób to zastosować. Tzn. po włączeniu bota zostanie pobrany ten klucz id windowsa i? Na podstawie tego kluczu wygenerować jakiś kod?

Kocham mpcforum.pl!!!

18706.png

Opublikowano

Zanim wyślesz użytkownikowi właściwy program, wyślij mu drobnostkę, która sama mu odczyta ten PID (nie będziesz mu kazać przecież grzebać po rejestrze :P) i wyświetli w polu edit.

 

On Ci ten klucz PID prześle (gg, meil) i ty już sobie go wkleisz we właściwym programie.

 

Na samym dodaj linię IF, która sprawdzi, czy klucz PID na kompie na którym program się uruchamia jest zgodny z tym, który zapiszesz wewnątrz programu.

 

To najprostsza metoda, ale wymaga oczywiście oddzielnego kompilowania dla każdego użytkownika.

Ta sygnatura jest pusta.

Opublikowano

Oddzielne kompilowanie dla każdego to nie problem, nie sądzę bym miał tylu chętnych, żebym mógł nie wyrabiać.

 

 

A jakie są minusy tego sposobu? Oprócz tego, że musi pobierać też programik który wyświetli mu PIN. Czy ktoś, kto zorientuje się, że to PID może jakoś to wykorzystać? :)

 

 

Hmm jeszcze tak sobie myślę o dodaniu zakodowania, tzn dodałbym skrypcik, który pobiera pierwsze cyfry przed pierwszym myślnikiem i po ostatnim myślniku i wtedy je łączył tworząc klucz.

Kocham mpcforum.pl!!!

18706.png

Opublikowano

Do szyfrowania stringów masz _StringEncrypt.

 

Nie PIN tylko PID :] PIN masz w telefonie, PID to numer windowsa oparty o kod licencji :]

 

Minus jest taki, że to łatwo złamać. Ale musisz myśleć o zabezpieczeniach jak o łańcuchu, w którym najistotniejesze jest zawsze najsłabsze ogniwo. Nie ma sensu niektórych spoiw tworzyć z czystego tytanu, jeśli w którymś miejscu masz zaledwie cynowy drucik.

 

I tym cynowym drucikiem jest właśnie program dekompilujący.

 

Zawsze i wszystko, przy odrobinie pracy da się złamać. Jeśli ktoś otrzyma kod źródłowy twojego programu (to jest jakieś 15 minut roboty) i odpowiednio go z interpretuje (to jest jakieś 2 do 3 dni roboty) wystarczy, że usunie dosłownie jedną linię - tę, która sprawdza jaki jest PID* - i całe zabezpieczenie bierze w łeb.

 

Oprócz PIDu popularne jest jeszcze sprawdzanie BIOSu albo modelu procesora. Ostatnie jest lepsze, bo rzadziej się wymienia procka niż aktualizuje bios.

 

Wszystkie te informacje są w rejestrze i od nich możesz uzależnić działanie programu.

 

Ale, nie dość, że wszystkie te informacje w rejestrze da się zmienić mając odpowiednie narzędzia, to jeszcze za pomocą RE można uzyskać kod źródłowy i te kilka linii usunać.

 

Także bardziej wyrafinowane metody, niż PID (ew. model procka, to już sobie sam poszukaj w google, "numer seryjny, procesor, rejestr windows") i _StringEncrypt mijają się z celem.

 

@Edit:

A, i pamiętaj, że wyżej wymieniona przeze mnie ścieżka dotyczy rejestru Windowsa 98/NT/00 i nowszych.

Nie mam pojęcia jak to działa na Linuksie (Linuks jest FLOSS, więc jako takiej licencji i PIDu raczej nie ma) ani nie wiem gdzie te informacje są zapisane na Win95.

Ta sygnatura jest pusta.

Opublikowano

Pomyłka z tym PIN'em. To już mnie zraziło jak takie łatwe jest uzyskanie mojego kodu źródłowego. Nad programem siedziałem z tydzień, a ktoś może uzyskać ten kod w dużo szybciej....

 

No nic, dzięki bardzo, przetestuje sobie jutro/ew. pojutrze metodę z PID'em i nie będę bardziej kombinował.

Kocham mpcforum.pl!!!

18706.png

Budowniczy
Opublikowano

Ja to widzę tak. Na początku pobierz UUID komputera i zaszyfruj go. Ktoś, kto chce uruchomić program wysyła Ci zaszyfrowane UUID, ty je odkodowujesz i szyfrujesz innym hasłem i tworzysz odpowiedni plik .req, który dodaje wpis do rejestru umożliwiający uruchomienie programu.

 

Funkcję zczytującą UUID znalazłem na oficialnym forum autoit'a.

 

Func _GetUUID()
   Local $oWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\localhost\root\cimv2")
   If Not IsObj($oWMIService) Then
       Return SetError(1, 0, -1)
   EndIf
   Local $oSysProd = $oWMIService.ExecQuery("Select * From Win32_ComputerSystemProduct")
   For $oSysProp In $oSysProd
       Return SetError(0, 0, $oSysProp.UUID)
   Next
   Return SetError(2, 0, -1)
EndFunc

 

Program więc będzie wyglądał tak:

 

;includy
#include<String.au3>

Const $SKEY = _StringEncrypt(1,_GetUUID(),"haslo_2",1)

If RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\nazwa_twojego_programu", "SKEY") = $SKEY Then
$SKEYisOK = True
Else
Const $HKEY = _StringEncrypt(1,_GetUUID(),"haslo_1",1)
InputBox('Klucz', 'Nie odnaleziono numeru seryjnego dla nastepujacego HardwareKey! Nastapi zamkniecie programu.',$HKEY)
$SKEYisOK= False
EndIf

If not $SKEYisOK Then Exit

;twój program

 

Generator. Oczywiście dostępny tylko dla Ciebie :)

 

#include <String.au3>
$HKEY = InputBox("Generator", "Podaj HKEY, dla którego chcesz wygenerować SKEY")
$SKEY = _StringEncrypt(1, _StringEncrypt(0, $HKEY, "haslo_1"), "haslo_2")
$file = FileOpen("key.reg", 2)
FileWrite ($file, "Windows Registry Editor Version 5.00" & @CRLF & @CRLF & "[HKEY_LOCAL_MACHINE\SOFTWARE\nazwa_twojego_programu]" & @CRLF & '"SKEY"="' & $SKEY & '"')
FileClose($file)

 

Plik key.reg utworzony przez generator wysyłasz odbiorcy. Oczywiście haslo_1, haslo_2, oraz nazwa_twojego_programu muszą być takie same w programie jak i w generatorze. Nie wiem, czy w kodzie wszystko działa, bo pisałem go na szybko. Jak będziesz miał jakieś problemy, to pisz :)

 

Jak nie udostępnisz nikomu kodu źródłowego, a jedynie skompilowaną aplikację zabezpieczenia nie będzie tak łatwo złamać. Na chwilę obecną nie ma dekompilatora, który działa z aktualną wersją autoit'a. Oczywiście wszystko jest możliwe, ale raczej nieosiągalne dla zwykłego losowca.

 

Pozdrawiam Mounthainsa :)

Opublikowano

j/j brak prądu :(

 

Troche jestem zaspany, ale wychodzi coś takiego: po odpaleniu generatora musze podać hkey - nie wiem gdzie go znajdę i co to jest :P

Po odpaleniu programu mam, że nie znaleziono nr seryjnego... i w inputboxie jest jakiś kod. Czy to jest hkey? Nie wiem czy tak, ale skopiowałem ten kod, wkleiłem do generatora, utworzył się plik key.reg ale po odpaleniu programu dalej mam, że nie znaleziono nr. serynego....

 

@ok,ok widze, że w tym inputboxie jest hkey, ale nie trybi po wpisaniu do do generatora. zaraz popróbuję jeszcze.

Kocham mpcforum.pl!!!

18706.png

Opublikowano
który dodaje wpis do rejestru umożliwiający uruchomienie programu.

 

Buahahaha. Też mi ograniczenie. Wystarczy znaleźć ten plik w rejestrze i podczas piracenia dołączyć go do "super-zabezpieczonego" pliku .exe.

 

Beznadzieja. W ogóle nie spełnia swojej roli.

 

Norak, mówię ci, tworzysz generator kodu na podstawie PID i kodujesz, dekodujesz (żeby się nie zorientował, że to PID, bo by było za łatwo) i jego PID wklejasz w sam program - który wysyłasz do określonego użytkownika.

 

Poza tym w UUID nie ma nic lepszego, tak samo można zmienić odpowiednim edytorem rejestru.

 

Podstawą naprawdę silnego zabezpieczenia (to jest takiego, które łamie się w miesiąc... ehh...) jest łączenie się z serwerem podczas działania aplikacji, tworzenie unikatowego klucza na podstawie kilkudziesięciu wartości sprzętowych oraz licencje okresowe (wykupowane na miesiąc, tydzień...) lub system mikrotransakcji...

 

Z czego te dwa ostatnie sprawdzają się najlepiej... Z czego ciekawy wniosek, że najlepszym zabezpieczeniem, jest sprzedawać taniej :]

Ta sygnatura jest pusta.

Budowniczy
Opublikowano

Buahahaha. Też mi ograniczenie. Wystarczy znaleźć ten plik w rejestrze i podczas piracenia dołączyć go do "super-zabezpieczonego" pliku .exe.

 

Beznadzieja. W ogóle nie spełnia swojej roli.

 

Norak, mówię ci, tworzysz generator kodu na podstawie PID i kodujesz, dekodujesz (żeby się nie zorientował, że to PID, bo by było za łatwo) i jego PID wklejasz w sam program - który wysyłasz do określonego użytkownika.

 

Poza tym w UUID nie ma nic lepszego, tak samo można zmienić odpowiednim edytorem rejestru.

 

Podstawą naprawdę silnego zabezpieczenia (to jest takiego, które łamie się w miesiąc... ehh...) jest łączenie się z serwerem podczas działania aplikacji, tworzenie unikatowego klucza na podstawie kilkudziesięciu wartości sprzętowych oraz licencje okresowe (wykupowane na miesiąc, tydzień...) lub system mikrotransakcji...

 

Z czego te dwa ostatnie sprawdzają się najlepiej... Z czego ciekawy wniosek, że najlepszym zabezpieczeniem, jest sprzedawać taniej :]

 

Gdy byś przeczytał, wiedział byś, że w tym kluczu jest zapisany serial wygenerowany na podstawie unikatowego UUID, nic więc nie da "dołączenie go go "super-zabezpieczonego" pliku .exe". No tak, ale czytanie ze zrozumieniem to chyba w podstawówce jest...

W twoim super sposobie konieczne jest wysyłanie dodatkowego programu zczytującego kod, oraz osobna kompilacja dla każdej osoby? ; DDDDDDDDDDDD

Proszę, skończ.

Opublikowano

W twoim sposobie również konieczne jest wysyłanie dodatkowego programu, bo niby skąd autor ma wziąć HKEY potrzebny do wygenerowania SKEY?

Przeciez nie każe mu szukać ręcznie. Trzeba wcześniej coś wysłać, co przeczyta UUID, wyświetli go, a użytkownik wyśle go do autora.

 

Co do "oddzielnej kompilacji":

Rozwiązanie z generatorem jest tylko w tym miejscu lepsze, że tworzy oddzielny plik.

Ale wychodzi na to samo. Kompilacja programu, tworzenie pliku... faktycznie, jest szybciej, ale mechanizm ten sam.

 

I nie pozwalaj sobie na teksty typu

czytanie ze zrozumieniem to chyba w podstawówce jest

 

Trochę szacunku dla współforumowiczów.

 

Plusa daję, żeby wyrównać wcześniejszego minusa, gdyż faktycznie -

Wcześniej nie zrozumiałem konceptu, trochę mętnie przedstawione, ale działa - zabezpieczenie tylko na jeden PC i na innym nie pójdzie więc zwracam honor i plusa.

 

 

@Down:

Oj, też wychodzi na to samo :P

 

W każdym razie cieszę się, że mogłem pomóc, twoje rozwiązanie jest... eh, lepsze.

Zadowolony? ;)

Ta sygnatura jest pusta.

Budowniczy
Opublikowano

W twoim sposobie również konieczne jest wysyłanie dodatkowego programu, bo niby skąd autor ma wziąć HKEY potrzebny do wygenerowania SKEY?

Przeciez nie każe mu szukać ręcznie. Trzeba wcześniej coś wysłać, co przeczyta UUID, wyświetli go, a użytkownik wyśle go do autora.

 

Co do "oddzielnej kompilacji":

Rozwiązanie z generatorem jest tylko w tym miejscu lepsze, że tworzy oddzielny plik.

Ale wychodzi na to samo. Kompilacja programu, tworzenie pliku... faktycznie, jest szybciej, ale mechanizm ten sam.

 

I nie pozwalaj sobie na teksty typu

 

 

Trochę szacunku dla współforumowiczów.

 

Plusa daję, żeby wyrównać wcześniejszego minusa, gdyż faktycznie -

Wcześniej nie zrozumiałem konceptu, trochę mętnie przedstawione, ale działa - zabezpieczenie tylko na jeden PC i na innym nie pójdzie więc zwracam honor i plusa.

 

Gdy program stwierdzi, że brakuje seriala / jest on nieprawidłowy, to sam wyświetli kod, który należy wysłać do autora. Nie potrzeba żadnych dodatkowych

@Down:

Oj, też wychodzi na to samo :P

 

W każdym razie cieszę się, że mogłem pomóc, twoje rozwiązanie jest... eh, lepsze.

Zadowolony? ;)

political-pictures-stephen-colbert-epic-win.jpg

Opublikowano

możecie też zrobić żeby program sam wysyłał PID i UUID e-mailem , i żeby program przy każdym działaniu sprawdzał PID lub UUID , i ściągnij sobie to : http://www.oreans.com/Release/ThemidaDemo.zip

 

Zabezpiecza przed "zcrackowaniem" , oczywiście żadne zabezpieczenie nie jest idealne ale lepsze to niż nic(to wersja demo ale mam nadzieje że da się coś z nią zrobić nie sprawdzałem)

liczylem na barce lecz ona niemogla wygrac.

Przez kibicow ktorzy przy rzutach roznych wolnych swiecili w messiego laserami

Opublikowano

decompilator jest, był i będzie.

Z tego co mi wiadomo, to nie ma dekompilatorów do najnowszych wersji autoit... mylę się?

1280314365-U1.png

 

Ci, których zwą wojownikami, podejmują walkę, mając przed sobą jeden cel – zniszczenie wroga. Muszą się wyzbyć ludzkich odruchów i uczucia litości. Muszą zabić każdego, kto zechce im przeszkodzić, choćby samego Boga lub Buddę. Prawda jest sercem sztuki walki.

Opublikowano

Jeśli skorzystanie z dekompilatora pomoże mi w lepszym zrozumieniu zabezpieczeń to możesz mi podesłać.

 

 

@Down

Szybka odpowiedź :P

 

Tak bota robi wiele - przeznaczony dla osób zainteresowanych, służący dobrze.

Kocham mpcforum.pl!!!

18706.png

Opublikowano

@2x up:

No niby jest, ale interpretowanie kodu zasyfionego obfuscatorem trwa trochę czasu.

 

@up:

Jeśli zarabiasz na czymś zrobionym w Au3 to na prawdę szacun - Autoit jako język jednowątkowy i wiele się nakombinowałem żeby zrobić najprostszego bota który robiłby kilka rzeczy na raz.

 

@top:

ale kombinujecie z tymi drugimi programami - najlepsze zabezpieczenie wg. mnie:

 

1. User ściąga program

2. Instaluje i uruchamia

3. Program sprawdza czy jest to pierwsze uruchomienie i jeśli jest wyświetla okienko z odpowiednio zmodyfikowanym PID (jak już sobie wymyślisz)

4. User wchodzi na stronę z płatnościami (lub jeśli tego nie chcesz/nie umiesz zrobić to się kontaktuje z tobą), podaje tamto PID i dostaje kod do wpisania w programie

5. Wpisuje kod w programie a ten sprawdza kod i PID (czy się zgadzają) i jeśli tak odblokowuje zawartość programu, jeśli nie wywala komunikat do usera

 

+:

* łatwość obsługi przez usera

* automatyka - wszystko robi za ciebie program i stonka

 

-:

* ktoś kto sobie pokombinuje i tak to rozgryzie

 

Do tego nie wiem czy dobrze myślę ale skoro PID jest oparty o nr licencji to co jak ktoś ma pirata? Zazwyczaj na jednej licencji jedzie kilka tysięcy osób więc PID może być identyczny na wielu komputerach. Pozatym mikropłatności są 100x lepsze - w programie robisz okienko IE i wrzucasz stronkę z elementem który ci podrzucą ludzie od płatności. Szybko, łatwo, efektywnie i bezpiecznie.

 

Powodzenia.

[TUT] Full Autoit V3 Tutorial

yo po 1 nie kayloger tylko bot który zapamiętuje hasła -_-

stop1.png

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...