Habs mir nicht genau angeguckt, aber die pack_open Funktion und das pack modul sind 2 verschiedene paar Schuhe, solltest du dich also nicht an die open Funktion gesetzt haben (habs mir ehrlich gesagt nicht angeguckt) bringt das ganze hier nichts
Habs mir nicht genau angeguckt, aber die pack_open Funktion und das pack modul sind 2 verschiedene paar Schuhe, solltest du dich also nicht an die open Funktion gesetzt haben (habs mir ehrlich gesagt nicht angeguckt) bringt das ganze hier nichts
pack_open benutzt lustigerweise pack.Get oder wie die Funktion halt im Client des nennen wir es mal Ziels heißt ... also ist deine Aussage schon mal im Kern falsch.
Ich habe einen weg aufgezeigt bei dem keine absolut pack.Get Methode mehr benötigt wird wodurch auch die pack_open Funktion nicht mehr benötigt wird wodurch wie bereits erwähnt es nicht mehr möglich ist Dateien über Python zu entpacken.
Python Dateien werden mit dem Weg oben direkt importiert und nicht erst später in Python verarbeitet.
Die Open Funktion ist im anderen Thema sollte ein funktionierender Fix sein
Nana Nova... wenn das in AoZ schon drin war, denn dort hieß das packmodul genauso, hat es nichts genuetzt, wenn nicht, nettes release Achso für die Person die gefragt hat ob das der fix für beides ist: Nö
€: Ich bin mir nicht ganz sicher aber soweit ich das gesehen hab' wird der Client nicht funktionieren wenn ihr die .Get Funktion rausnehmt
€: Ich bin mir nicht ganz sicher aber soweit ich das gesehen hab' wird der Client nicht funktionieren wenn ihr die .Get Funktion rausnehmt
Deshalb hat er ja dazu geschrieben:
Quote:
If your python code does not load any files with pack_open or pack.Get you can remove the pack.Get function.
Aber ja. mit der npclist allein ist das nicht erledigt. Dazu kommen noch die locale's (locale_game, locale_interface) und vor allem die UIScripts und die loginInfo.
Die locales sollte man von der bin laden lassen(wie oben die npclist). Außerdem sollte noch execfile() komplett in die bin verlagert werden.
Nana Nova... wenn das in AoZ schon drin war, denn dort hieß das packmodul genauso, hat es nichts genuetzt, wenn nicht, nettes release Achso für die Person die gefragt hat ob das der fix für beides ist: Nö
€: Ich bin mir nicht ganz sicher aber soweit ich das gesehen hab' wird der Client nicht funktionieren wenn ihr die .Get Funktion rausnehmt
Also erstmal laberst du Müll.
Sorry, aber die pack_open function an sich ist wenn man es genau nimmt ne Class in der System.py.
Code:
__builtins__.pack_open = pack_open = pack_file
Da wird das ganze definiert.
pack_file ist ne Python Class:
Code:
class pack_file(object):
def __init__(self, filename, mode = 'rb'):
assert mode in ('r', 'rb')
if not pack.Exist(filename):
raise IOError, 'No file or directory'
self.data = pack.Get(filename)
if mode == 'r':
self.data=_chr(10).join(self.data.split(_chr(13)+_chr(10)))
def __iter__(self):
return pack_file_iterator(self)
def read(self, len = None):
if not self.data:
return ''
if len:
tmp = self.data[:len]
self.data = self.data[len:]
return tmp
else:
tmp = self.data
self.data = ''
return tmp
def readline(self):
return self.read(self.data.find(_chr(10))+1)
def readlines(self):
return [x for x in self]
und darin läuft alles über die oben genannten pack.Exists und pack.Get.
nimmt man das oben genannte Beispiel und ersetzt die pack functions mit den obrigen, dann hat man keine Probleme mehr mit eurem Tool.
"Achso für die Person die gefragt hat ob das der fix für beides ist: Nö" "beides"
Das Release ändert rein gar nichts, was für das andere Script relevant ist:
"soweit ich das gesehen hab' wird der Client nicht funktionieren wenn ihr die .Get Funktion rausnehmt"
die Get Funktion des Packmodules.
Dass pack_open eine Klasse ist mir bewusst. Davon abgesehen pack_open habe ich NIE angesprochen
PyObject* appLoadLocaleInterface(PyObject* poSelf, PyObject* poArgs)
{
PyObject* dict;
PyArg_ParseTuple(poArgs, "O!", &PyDict_Type, &dict);
const VOID* pvData;
CMappedFile kFile;
std::string localePath = std::string(LocaleService_GetLocalePath());
if (!CEterPackManager::Instance().Get(kFile, (localePath + "locale_interface.txt").c_str(), &pvData))
return;
CMemoryTextFileLoader textFileLoader;
textFileLoader.Bind(kFile.Size(), pvData);
CTokenVector TokenVector;
for (DWORD i = 0; i < textFileLoader.GetLineCount(); ++i)
{
if (!textFileLoader.SplitLineByTab(i, &TokenVector))
continue;
if (TokenVector.size() == 0)
continue;
if (TokenVector.size()>=2)
{
PyDict_SetItemString(dict, TokenVector[0].c_str(), PyString_FromString(TokenVector[1].c_str()));
}
}
return Py_BuildNone();
}
Next, es ist wie gesagt möglich das keine Dateien über pack_open oder packGet geladen werden. Aber ich gebe euch hier nicht alles was ihr da für braucht fertig nur das Wissen wie man es macht und das es eben möglich ist.
und wie bereits gesagt wegen der anderen Sache kann man immer noch open überschreiben
Code:
def custom_open(name, mode='r', buffering = 0)
//do stuff to block access to certain files or paths here
return __builtin__.open(path, mode, buffering)
__builtin__.open = custom_open
PyObject* appLoadLocaleInterface(PyObject* poSelf, PyObject* poArgs)
{
PyObject* dict;
PyArg_ParseTuple(poArgs, "O!", &PyDict_Type, &dict);
const VOID* pvData;
CMappedFile kFile;
std::string localePath = std::string(LocaleService_GetLocalePath());
if (!CEterPackManager::Instance().Get(kFile, (localePath + "locale_interface.txt").c_str(), &pvData))
return;
CMemoryTextFileLoader textFileLoader;
textFileLoader.Bind(kFile.Size(), pvData);
CTokenVector TokenVector;
for (DWORD i = 0; i < textFileLoader.GetLineCount(); ++i)
{
if (!textFileLoader.SplitLineByTab(i, &TokenVector))
continue;
if (TokenVector.size() == 0)
continue;
if (TokenVector.size()>=2)
{
PyDict_SetItemString(dict, TokenVector[0].c_str(), PyString_FromString(TokenVector[1].c_str()));
}
}
return Py_BuildNone();
}
Next, es ist wie gesagt möglich das keine Dateien über pack_open oder packGet geladen werden. Aber ich gebe euch hier nicht alles was ihr da für braucht fertig nur das Wissen wie man es macht und das es eben möglich ist.
und wie bereits gesagt wegen der anderen Sache kann man immer noch open überschreiben
Code:
def custom_open(name, mode='r', buffering = 0)
//do stuff to block access to certain files or paths here
return __builtin__.open(path, mode, buffering)
__builtin__.open = custom_open
Alpha das mit dem custom_open bastel ich grade direkt in der exe.
Mit ner tollen Überprüfung, dass nur .txt geladen werden können.
[RELEASE] Python-Module + Funktionen 09/25/2017 - Metin2 PServer Guides & Strategies - 15 Replies Moin,
ich dachte mir mal, ich trete in die Fußstapfen von hier mehr oder weniger bekannten Mitgliedern (hier ihre Namen verschlüsselt: CxxP & LaSor) und release was, das ich innerhalb von 5 Minuten bekommen kann.
Und zwar:
Eine vollständige Liste ALLER Module und zugehörigen Funktionen in der Metin2-Binary
Die Binary ist von 2010, da ich aber nicht länger als 5 Minuten brauchen darf, konnte ich die neueren Sachen alle noch nicht extracten. Werde ich nachliefern, sobald die gewünschte...
[Release] Very simple PHP module for server stats 05/09/2012 - SRO Coding Corner - 25 Replies Hello, this is my first 'release' in a very long time at EPVP. As you know I gave up long ago trying to participate actively and showing my stuff because of the community actitude. I am not that faithful anymore.
However, here I bring a very little script that I think will be useful. Having a look at all server's websites which has been released and those who I got access by other ways I have realized all of them are using the socket connections, along with handshake drama.
The main...
[Mini Release]Skill Module Adition 01/18/2012 - Metin2 PServer Guides & Strategies - 5 Replies Vorgeschichte:
Joa da ich neulich mal meine Scripts wieder angeschaut hatte hab ich mitbekommen, dass ich die Skill Icons einfach nur nooblike dargestellt habe.
Daraufhin hab ich mir ein kleines Script gemacht, welches mir die Icons ausgibt.
Verwenden tut ihr das Script folgendermaßen:
Ihr haut die .pyc Datei einfach in den Lib Ordner und addet dort wo ihr es nutzen wollt das hier:
import skilladition
SkillAditionByMeLol = skilladition.SkillAditionDialog()
Nun könnt ihr diese...
[Release] Fastject Module Injector 10/14/2011 - Coding Releases - 4 Replies Hey,
hier mal ein etwas älterer Injector von mir.
Features:
2 different injection methods (CreateRemoteThread and SetThreadContext)
module hiding via PEB manipulation
auto save / load settings
manual injection by process id