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

Małe zabezpieczenie do clienta.


Rekomendowane odpowiedzi

Opublikowano
import os
import dbg

def __TeodorCheckUp(self):
    path = os.getcwd()
    k = os.listdir(path)
    for item in k:
        if item.find('.py') >= 1 and item.find('.pyc') >= 1 or item.find('.mix') >= 1:
            dbg.LogBox('Usuwam: ' + str(item))
            
            try:
                os.remove(item)
            except:
                dbg.LogBox('Klient zostaje zamkni\xeaty!')
                dbg.LogBox('Usu\xf1 r\xeacznie plik: ' + str(item))
                app.Abort()

Polecam, sprawdzone, działa.  B)

 

 

B)

 

Zatwierdzam to.

Tylko coś przy dekompilacji się popsuło.

if item.find('.py') >= 1 and item.find('.pyc') >= 1 or item.find('.mix') >= 1:

Tak jest normalnie:

if item.find('.py') >= 1 or item.find('.pyc') >= 1 or item.find('.mix') >= 1:
pre_1405084226__sygnatura_3.png

Opublikowano

Co racja to racja.. Ps: mnie ciągle zastanawia. Po co zabezpieczenia w skryptach pythona skoro można je wypakować? Nie rozumiem tu logiki.

Logika jest taka, że jeżeli ktoś naprawdę chce coś porządnie zrobić, to nie da się ich wypakować.

 

Topic - tak jak wyżej pisali.

517981403547547309333.jpeg

Opublikowano

Logika jest taka, że jeżeli ktoś naprawdę chce coś porządnie zrobić, to nie da się ich wypakować.

 

Topic - tak jak wyżej pisali.

heh. Nie ma takiego czegoś jak "nie da się wypakować". Jeżeli coś jest czymś zrobione to zawsze się to da jakoś wyciągnąć.

ps; zgodzę się co do wydobycia czegoś co jest skompilowane ;) np source z c++ (tu masz rację bo tego się nie da wydobyć w takiej postaci jak było kompilowane)

Opublikowano

Logika jest taka, że jeżeli ktoś naprawdę chce coś porządnie zrobić, to nie da się ich wypakować.

 

Topic - tak jak wyżej pisali.

 

Dlaczego próbujesz nas okłamać?

pre_1405084226__sygnatura_3.png

Opublikowano
                   else if(type == 2)

                    {

                        unsigned char* compressedBuffer = new unsigned char;

                        memset(compressedBuffer, 0, Size + (Size / 16) + 64 + 3 + 4);

    

                        unsigned long compSize = 0;

                        if(lzo_compress(Buffer, Size, compressedBuffer + 4, &compSize) != LZO_E_OK)

                        {

                            printf("Error when compressing %s.\n", file.c_str());

                            delete [] compressedBuffer;

                            pause();

                            if(agin) goto LAB1; else return 0;

                        }

                        *(unsigned long*)compressedBuffer = FourCC;

 

                        unsigned char* encryptedBuffer = new unsigned char[compSize + 4 + 7];

                        memset(encryptedBuffer, 0, compSize + 4 + 7);

    

                        unsigned long cryptSize = XteaEncrypt((unsigned long*)encryptedBuffer, (unsigned long*)compressedBuffer, DataXTEA, compSize + 4);

 

                        memset(epkBuffer + lastoffset, 0, cryptSize + 16);

                        *(unsigned long*)(epkBuffer + lastoffset) = FourCC;

                        *(unsigned long*)(epkBuffer + lastoffset + 4)  = cryptSize;

                        *(unsigned long*)(epkBuffer + lastoffset + 8)  = compSize;

                        *(unsigned long*)(epkBuffer + lastoffset + 12)  = Size;

                        memcpy(epkBuffer + lastoffset + 16, encryptedBuffer, cryptSize);

 

                        

                        *(unsigned long*)(eixdecompressedBuffer + 172) = 512 + (512 / (cryptSize + 16));

                        *(unsigned long*)(eixdecompressedBuffer + 176) = cryptSize;

                        *(unsigned long*)(eixdecompressedBuffer + 180) = CRC32(epkBuffer + lastoffset, cryptSize);

                        lastoffset += cryptSize + 16;

                        delete[] compressedBuffer;

                        delete[] encryptedBuffer;

                    }

 

type="2" Dziękuje pozdrawiam. Na początku pliku można zdublować funkcję i unpacker będzie padał jak kaczka.

Coś w stylu : sztucznego xml.

 

Wtedy nie trzeba nawet chować .eix gdzieś w niebo lub dodawać do virtualizacji jak to robią ludzie moleboxem (tym gónwem) lub czymś lepszym np: Enigma Protector.

Opublikowano

 

                   else if(type == 2)
                    {
                        unsigned char* compressedBuffer = new unsigned char;
                        memset(compressedBuffer, 0, Size + (Size / 16) + 64 + 3 + 4);
    
                        unsigned long compSize = 0;
                        if(lzo_compress(Buffer, Size, compressedBuffer + 4, &compSize) != LZO_E_OK)
                        {
                            printf("Error when compressing %s.\n", file.c_str());
                            delete [] compressedBuffer;
                            pause();
                            if(agin) goto LAB1; else return 0;
                        }
                        *(unsigned long*)compressedBuffer = FourCC;
 
                        unsigned char* encryptedBuffer = new unsigned char[compSize + 4 + 7];
                        memset(encryptedBuffer, 0, compSize + 4 + 7);
    
                        unsigned long cryptSize = XteaEncrypt((unsigned long*)encryptedBuffer, (unsigned long*)compressedBuffer, DataXTEA, compSize + 4);
 
                        memset(epkBuffer + lastoffset, 0, cryptSize + 16);
                        *(unsigned long*)(epkBuffer + lastoffset) = FourCC;
                        *(unsigned long*)(epkBuffer + lastoffset + 4)  = cryptSize;
                        *(unsigned long*)(epkBuffer + lastoffset + 8)  = compSize;
                        *(unsigned long*)(epkBuffer + lastoffset + 12)  = Size;
                        memcpy(epkBuffer + lastoffset + 16, encryptedBuffer, cryptSize);
 
                        
                        *(unsigned long*)(eixdecompressedBuffer + 172) = 512 + (512 / (cryptSize + 16));
                        *(unsigned long*)(eixdecompressedBuffer + 176) = cryptSize;
                        *(unsigned long*)(eixdecompressedBuffer + 180) = CRC32(epkBuffer + lastoffset, cryptSize);
                        lastoffset += cryptSize + 16;
                        delete[] compressedBuffer;
                        delete[] encryptedBuffer;
                    }
 
type="2" Dziękuje pozdrawiam. Na początku pliku można zdublować funkcję i unpacker będzie padał jak kaczka.
Coś w stylu : sztucznego xml.
 
Wtedy nie trzeba nawet chować .eix gdzieś w niebo lub dodawać do virtualizacji jak to robią ludzie moleboxem (tym gónwem) lub czymś lepszym np: Enigma Protector.

 

 

Jeżeli chodzi Ci o podwójną kompresję to client też tego raczej nie będzie chciał.

pre_1405084226__sygnatura_3.png

Opublikowano

Jeżeli chodzi Ci o podwójną kompresję to client też tego raczej nie będzie chciał.

Nie panie kolego, nie chodzi o to co napisałeś.

Opublikowano

Ale gdy włączy klienta na nowo, to nadal będzie ten sam "błąd", więc koło się zapętla dopóki nie usunie pliku, nie mówiąc o innych aspektach.

 

właśnie nie plik zostaje automatycznie usunięty:

 

 

import dbg
import app
import os
 
def RunCheckUp():
Whitelist = ['d3d8.dll','d3d9.dll','enbconvertor.ini','enbseries.ini','mss32.dll', 'Metin2.exe', 'mouse.cfg','pack', 'miles', 'mark', 'lib', 'DLL']
 
path = os.getcwd()
k = os.listdir(path)
if k != Whitelist:
####Starting_Phase01#####
for item in k:
if not item in Whitelist:
dbg.LogBox("Usun: " + str(item))
try:
os.remove(item)
except:
dbg.LogBox("Client zostanie zamkniety!")
dbg.LogBox("Prosimy usunac plik: " + str(item))
app.Abort()
else:
pass
if Whitelist != k:
#####-Starting_Phase02#######
for missing in Whitelist:
if not missing in k:
dbg.LogBox("Brak pliku: " + str(missing))
else:
pass
RunCheckUp()
Opublikowano

Nie panie kolego, nie chodzi o to co napisałeś.

 

Wybacz.

Jednak czy na pewno binka zaakceptuje to co chcesz zrobić i nie będzie się przeciążała wczytując to?

pre_1405084226__sygnatura_3.png

Opublikowano

Wybacz.

Jednak czy na pewno binka zaakceptuje to co chcesz zrobić i nie będzie się przeciążała wczytując to?

Nie będzie, gdybym tego nie testował to bym nie napisał..

Standardowe pliki pozostają bez zmiany. jedynie dołączone zostaje sztuczne xml. Sprawdź konstrukcję unpackera to zobaczysz jak on (wypakowuje pliki)

Wtedy się łatwo zgubi i padnie ;C

Opublikowano

Boże widzisz i nie grzmisz.

Nie xmlka tylko eix, które często pakuje się do binki. To nie 2k10 ze pakerow z xmlkami się używa.

Opublikowano

Boże widzisz i nie grzmisz.

Nie xmlka tylko eix, które często pakuje się do binki. To nie 2k10 ze pakerow z xmlkami się używa.

Dobrze panie kolego, tylko że ja nie posiadam source bez xml więc proszę cię nie odzywaj się ;)

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...