Register for your free account! | Forgot your password?

You last visited: Today at 17:47

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[RLS]Client Protection *LITE*

Discussion on [RLS]Client Protection *LITE* within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.

Reply
 
Old 03/15/2013, 23:13   #16
 
elite*gold: 21
Join Date: Oct 2012
Posts: 374
Received Thanks: 524
Quote:
Originally Posted by passy305 View Post
Mag sein, aber 98% hier laden sich jeden scheiß,
ohne auchnur 1 Wort zu lesen.

Woraufhin sie sinnlose Posts schreiben wie man es einfügt,
weil sie bei den Tabs gefailed haben.
selbst schuld,...
Analyze™ is offline  
Thanks
1 User
Old 03/15/2013, 23:24   #17
 
elite*gold: 139
Join Date: Sep 2010
Posts: 583
Received Thanks: 545
Video eingefügt als Demonstration. Das ich ja nur ein kleiner ripper bin.
.XXShuzZzle is offline  
Old 03/15/2013, 23:48   #18
 
elite*gold: 0
Join Date: Jan 2010
Posts: 1,916
Received Thanks: 538
Wow wie schwer xd gibt ja nicht umsonst den gui editor.
'oShet is offline  
Old 03/16/2013, 01:05   #19
 
King Sora's Avatar
 
elite*gold: 6394
Join Date: Nov 2008
Posts: 1,225
Received Thanks: 4,766
Quote:
Originally Posted by ShuzZzle View Post
Wenn du keine Ahnung hast einfach mal die Fresse halten. Versuch das mal mit deinen kack low skill gui editor zu machen.
Man kann sowas auch normal sagen, müsst ihr immer alle aufeinander losgehen?
Ihr müsst hier nicht immer den "BigBoss" markieren, wenn euch jemand zu Recht weist, dann nehmt es hin, sagt ihm was ihr noch dazu zu sagen habt und lasst es anschließen gut sein!

...lasst die Leute reden, denn wenn die Leute reden, machen sie nichts schlimmeres...

Zum Release kann ich nicht viel sagen, auser das ich es besser fände wenn die Methode sich nicht immer selber aufrufen würde, das ist nicht nötig.. (finde ich)

MfG.
King Sora is offline  
Thanks
9 Users
Old 03/16/2013, 01:42   #20
 
.BaumKuchen's Avatar
 
elite*gold: 0
Join Date: Oct 2012
Posts: 47
Received Thanks: 292
lasst euch das anderst generieren, sodass ihr das auch gescheit patchen könnt.

PHP Code:
#This library is a improved version of the code written by Paul Chakravarti which he released into the public domain
#http://code.activestate.com/recipes/496737/

import os
import struct
md5time

def crypt
(key,data,iv,n=32):
    
key md5.new(key).digest()
    
def keygen(key,iv,n):
        while 
True:
            
iv xtea_encrypt(key,iv,n)
            for 
k in iv:
                
yield ord(k)
    xor = [ 
chr(x^y) for (x,yin zip(map(ord,data),keygen(key,iv,n)) ]
    return 
"".join(xor)

def xtea_encrypt(key,block,n=32,endian="!"):
    
    
v0,v1 struct.unpack(endian+"2L",block)
    
struct.unpack(endian+"4L",key)
    
sum,delta,mask 0L,0x9e3779b9L,0xffffffffL
    
for round in range(n):
        
v0 = (v0 + (((v1<<v1>>5) + v1) ^ (sum k[sum 3]))) & mask
        sum 
= (sum delta) & mask
        v1 
= (v1 + (((v0<<v0>>5) + v0) ^ (sum k[sum>>11 3]))) & mask
    
return struct.pack(endian+"2L",v0,v1)

dump = []
for 
rootdirsfiles in os.walk(os.getcwd()):
    for 
file in files:
        
name os.path.join(rootfile)
        
hash self.getFileHash(name)
        
dump.append(hash)
check_struct crypt("password""".join(dump), "01234567"
erstellt euch einen in xtea gecrypteten Dump (müsst noch Dateien wie config oder syserr ignorieren, da diese ihren Hash immer schön ändern) vom kompletten Clienten.
Packt den Schmarrn mit ein als Modul (Hinweis: )
und vergleicht hier die Variablen.

Wirklich effektiv ist die Methode gesamt nicht, Injektoren müssen ja nicht einmal im gleichen Ordner liegen, sie greifen lediglich auf die PID um damit zu agieren.

Mittelmäßiges Beispiel, welches DaRealFreak vor einer langen Zeit mal publiziert hat.
Wie das ganze injected wird stammt btw. von der offiziellen Python Seite bzw. der Dokumentation.
PHP Code:
#!/usr/bin/python
# -*- coding: latin-1 -*-
import sysosctypessubprocess

class DllInjector(object):

    
def __init__(self):
        if 
sys.platform == 'linux' or sys.platform == 'linux2':
           
self.Clear lambdaos.system('clear')
        else:
           
self.Clear lambdaos.system('cls')
    
        print(
"Dll Injector by DaRealFreak\n")
        
        
self.ChooseProcess()
        
    
def ChooseProcess(self):
        
subprocess.Popen('tasklist',stdout=subprocess.PIPE,stderr=subprocess.PIPE)
        
outputerrors p.communicate()
        
        
ProcessList = []
        
NameCheck = []
        
        for 
line in output.split("\n")[7:]:
            
name = []
            for 
char in line:
                try:
                    if 
not ("".join(name[-3:])) == "   ":
                        
name.append(char)
                    else:
                        break
                
except:
                    
name.append(char)
            
name "".join(name[:-3])
            if 
not name == "":
                
piddata line.split(name)[1]
                
pid = []
                for 
char in piddata:
                    if 
char.isdigit():
                        
pid.append(char)
                    if 
not char.isdigit() and char != " ":
                        break
                
pid "".join(pid)
                if 
not pid == "":
                    
pid int(pid)
                    if 
not name in NameCheck:
                        
ProcessList.append([namepid])
                        
NameCheck.append(name)
                        
        
ProcessList sorted(ProcessListkey=lambda processprocess[0])

        print(
"Inject dll to process:\n")
        
pid self.OptionDialog(ProcessList)
        
self.Clear()
        print(
"Process Pid: %s" % (pid))
        
        
self.ChooseDll(pid)
        
    
def ChooseDll(selfpid):
        
dll_path raw_input("Select dll file to inject...\n")
        if 
not os.path.exists(dll_path):
            
self.Clear()
            print(
"Dll file not found, please try again...\n")
            
self.ChooseDll(pid)
        
        
self.InjectDll(piddll_path)

    
def OptionDialog(selfoptions):
        for 
option in options:
            print(
"%s. %s" % (options.index(option) + 1option[0]))
        
Select raw_input("\nOption: \n")
        if 
Select.isdigit():
            if 
int(Select) > len(options):
                
self.Clear()
                print(
"Please choose another index.\n")
                return(
self.OptionDialog(options))    
            return(
options[int(Select) - 1][1])
        else:
            
self.Clear()
            print(
"Please enter a valid digit.\n")
            return(
self.OptionDialog(options))

    
def InjectDll(selfpiddll_path):
        
self.Clear()
        print(
"[*] Starting Dll Injection")
    
        
kernel32 ctypes.windll.kernel32

        
print("[*] Opening Process....")
        
hproc kernel32.OpenProcess(0x1F0FFFFalsepid)
        print(
"[*] Allocation memory..")
        
ADDRS kernel32.VirtualAllocEx(hproc0len(dll_path), 0x3000,0x04)
        print(
"[*] Writing into Process..")
        
kernel32.WriteProcessMemory(hprocADDRSdll_pathlen(dll_path), ctypes.byref(ctypes.c_int(0)))
        print(
"[*] Getting Module Handle..")
        
k32dll kernel32.GetModuleHandleA("kernel32")
        print(
"[*] Get Process Address")
        
loadlib_func kernel32.GetProcAddress(k32dll,"LoadLibraryA")
        print(
"[*] Remote Thread..")
        if 
not kernel32.CreateRemoteThread(hprocNone0loadlib_funcADDRS0ctypes.byref(ctypes.c_ulong(0))):
            
raw_input("[*] Injection Failed\n")
            
sys.exit(0)
        else:
            
raw_input("[*] Injection Successfull\n")

DllInjector() 
Bin jetzt zu faul selber einen zu schreiben, der Code ist nicht mehr allzu aktuell was er da praktiziert hat, aber reicht als Beispiel aus.
Klappt auch noch wunderbar bei allen Servern die ich ausprobiert habe.

Fazit:
Wer das ganze braucht kann es ruhig nehmen, die Methode ansich ist leider statisch, des Weiteren bringt das ganze nur insofern etwas, wenn der Nutzer die ganzen Dateien im Hauptordner liegen hat, was überhaupt nicht notwendig ist um Dlls in den Prozess zu laden.

Einen schönen Abend noch
.BaumKuchen is offline  
Thanks
4 Users
Old 03/16/2013, 09:27   #21
 
elite*gold: 5
Join Date: Oct 2010
Posts: 1,692
Received Thanks: 1,772
Zum Release:
Es geht doch eigentlich viel einfacher man könnte doch einfach (wenn man einen Patcher hat) die patchlist.xml per urllib einlesen dann splitten in datei und hash und dann einfach die Sachen überprüfen falls es nicht übereinstimmt die Meldung "Dein Client ist nicht Aktuell"

Gleichzeitig könnte man alle anderen Datein die noch im Client sind löschen.
DasKuchen is offline  
Old 03/16/2013, 09:40   #22
 
яανєη™'s Avatar
 
elite*gold: 0
Join Date: Jan 2013
Posts: 89
Received Thanks: 67
Mal testen Danke.
яανєη™ is offline  
Old 03/16/2013, 10:39   #23

 
LxR'EsoZiaL's Avatar
 
elite*gold: 15
Join Date: Mar 2010
Posts: 4,269
Received Thanks: 2,499
Von xCPx gerippt? Ironie? Wenn schon dann hats xCPx selber von anderen gerippt. Das steht übrigens schon in sein drecks Namen.

Quote:
Originally Posted by ShuzZzle View Post
Ähm was ist daran ne backdoor WTF?



Ja es ist mein System. [SA]***** & Analyze war live dabei beim schreiben. Wenn xCPx das schon gemacht hatte dann tuts mir leid.

Hab ich schonmal gesagt das dieses "er war dabei gewesen" sogut wie keine Wirkung gegenüber mir hat und das es jeder sagen kann?



LxR'EsoZiaL is offline  
Old 03/16/2013, 10:51   #24

 
elite*gold: 0
Join Date: Jan 2013
Posts: 348
Received Thanks: 353
trotzdem unsicher, da man einfach die DLL's umprogrammieren kann, sodass sie die normalen Funktionen + deine Injektor Funktion hat...

Zu dem Rippen sag ich jetzt mal gar nichts....
TheMarv :< is offline  
Old 03/16/2013, 15:38   #25
 
elite*gold: 0
Join Date: Feb 2013
Posts: 3
Received Thanks: 0
Excuse me, but where it should be placed, not in root?
GherusioPowa is offline  
Old 03/16/2013, 17:18   #26
 
xCPx's Avatar
 
elite*gold: 20
Join Date: Jun 2011
Posts: 2,897
Received Thanks: 3,336
Quote:
Originally Posted by .EsoZiaL' View Post
Von xCPx gerippt? Ironie? Wenn schon dann hats xCPx selber von anderen gerippt. Das steht übrigens schon in sein drecks Namen.




Hab ich schonmal gesagt das dieses "er war dabei gewesen" sogut wie keine Wirkung gegenüber mir hat und das es jeder sagen kann?



Esozial? nur weil du nichts auf die Reihe kriegst, musst du bei anderen keinen Rufmord betreiben.

Nachdem die Beta von NewVision vorbei war, hab ich mein Script released gehabt (hat alle dateien im Clienten auf Md5 geprüft und hat ein einziger nicht gestimmt oder war eine nicht gelistete datei dabei, hat er nichtmehr gestartet.)


Naja mit so Kindergartenzeugs sind wir durch haben das nun ordentlich gelöst.
Ist an sich ne 5 Minutenarbeit, selbst mit überprüfung aller dateien, mit sämtlichen Unterverzeichnissen etc.
Aber wie gesagt, ich hab kp ob sie es von mir haben oder nicht, mir ist das bei so nem Kindergartenscript aber ehrlich gesagt auch scheißegal.
xCPx is offline  
Thanks
2 Users
Old 03/16/2013, 17:59   #27
 
.Iscariot's Avatar
 
elite*gold: 37
Join Date: Jan 2010
Posts: 2,035
Received Thanks: 1,706
leuts, könnt ihr auch mal eure Kindergartengespräche sein lassen !?
Es ist schon schlimm genug, dass man anderen Leuten sowas unterstellt, aber sich dann noch dermaßen lächerlich machen, indem man sich in einem ultimativen flamewar bekriegt ist einfach dermaßen kindisch, dass ich mir manchmal die Frage stelle, was ihr euch überhaupt dabei denkt ?
Anstatt mit einander zu arbeiten, arbeitet ihr gegeneinander ...
.Iscariot is offline  
Old 03/16/2013, 18:39   #28
 
elite*gold: 0
Join Date: Aug 2012
Posts: 85
Received Thanks: 8
I put this in my client and doesn´t work

root --> check.py

help me please
epvp! is offline  
Thanks
1 User
Old 03/17/2013, 04:46   #29
 
KillHumans's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 416
Received Thanks: 95
..............

Quote:
Originally Posted by epvp! View Post
I put this in my client and doesn´t work

root --> check.py

help me please

....
KillHumans is offline  
Old 03/17/2013, 11:58   #30
 
elite*gold: 0
Join Date: Aug 2012
Posts: 85
Received Thanks: 8
help me please T-T
epvp! is offline  
Reply


Similar Threads Similar Threads
tq client clicker protection
03/12/2013 - CO2 Private Server - 1 Replies
i've found an exploit at tq while trying to sniff some packets and i need clicker for certain job , i've coded one but the item im using for exploit exist on a 136 archer and i don't want to get it banned so i want to ask if tq check for clickers (i heard it does) if so , where is that call to nop it thanks in advance
[Best client protection?] Is this best client protection?
10/31/2012 - Metin2 Private Server - 0 Replies
Hello, i found this : WildGamers Security Page This website offers for metin2 clients anti-hack protection with autoban etc. (deleted root etc.), and I try him on my server, and this works. But, how I can to user switchbot on 4Metin PVP - Private server - Use this protection with some things edited. P.S.: Protection is only in client, personalized PONG on game :-s
Help whit protection client
12/19/2011 - Metin2 Private Server - 1 Replies
Hello community! I want help for protect client . I know how to change eix.epk and change lzo key... but on ly one problem is the protection eix.epk and make decrypter/crypter of it. Can anyone post me any guide or help me on it? Thank you very much... Hey this si community right? why NO ONE help? this community go die ._.
Client Protection?
05/08/2009 - World of Warcraft - 0 Replies
so i was wondering what kind of protection the wow client has, like can i search (or access through kernel calls) the virtual memory safely or do bots and such strictly have to be pixel based? (without killing warden i mean)



All times are GMT +2. The time now is 17:47.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.