Ich bin ein Fan von rPE und versuche mich schon seit längerer Zeit mit dem Schreiben von eigenen Filtern. Nur bin ich der Programmiersprache Delphi nicht mächtig, und habe nicht die Zeit bei 0 anzufangen und mich bis auf das Niveau von Redox hochzuarbeiten. Deswegen ist mir die Idee für diesen Thread gekommen:
Jeder hat die Möglichkeit einen eigenen Filter für rPE hier zu posten und zu beschreiben welches Problem er damit hat, oder um anderen Usern dabei zu helfen. Das pure Fragen nach Filtern, ohne sich selber damit beschäftigt zu haben und das Ergebnis seiner Arbeit zu posten, ist nicht erlaubt.
__________________
Ich mache gleich mal den Anfang:
Ich will einen einfachen Filter schreiben mit der Option das er per Tastendruck (de)aktiviert werden kann. Der Filter ist für das Spiel Ragnarok Online und soll helfen, das Animationsdelay bei diversen Skills zu umgehen.
Ich habe meine Gedanken zu einzeln hinzugefügten Codeuzeilen farbig hervorgehoben. Auch wenn der Code auch ohne Kommentare zu verstehen wäre, soll es einfach meine Gedankengänge schildern und diese können dann gegebenfalls berichtigt werden, was zur meiner eigenen Verständnis erheblich beiträgt. Neue Erkenntnisse werden mit Grün hineineditiert.
Code:
library rPE_ex;
uses
windows,
Winsock2,
winsock,
rpefuncs;
var
enable: Boolean = false; [color=red]//definiert die Bedinung unter der der Spaming-Filter aktiviert werden soll[/color]
procedure hot;
begin
enable := true; [color=red]//per hotkey wird diese Prozedur aufgerufen, welche diese Variable auf true gesetzt um den spaming Filter zu aktivieren[/color]
end;
function Send_WS1(s: TSocket; var Buf : PChar; len, flags: Integer; pSendWs1, pRecvWs1, pSendWs2, pRecvWs2: Pointer; var IsWorking : Boolean):Integer; stdcall;
var
CurHex: string;
i : integer;
[color=green]begin[/color]
if enable then [color=red]//prüfe ob der Filter aktiviert sein soll[/color]
begin
begin
CurHex := GetBufferAsHex(buf, len);
if (pos('7200',CurHex) <> 0) and (pos('005400',CurHex) <> 0) then [color=red]//suche in den gesendeten Packets nach den Hexwerten...[/color]
begin
@Send_Callback := pSendWs1;
for i := 0 to 50 do [color=red]//um ein zutreffendes Packet 50 mal[/color]
begin
sleep(5); [color=red]//mit 5 ms Delay zu senden[/color]
SendPacket(s,CurHex);
end;
end;
result := 0;
end;
end;
[color=green]end;[/color]
begin
Send_Callback := pSendWs1;
aSock := s;
result := 0;
end;
procedure DLL_Load;
begin
IntLog('rpe_log.log');
end;
procedure DLL_UnLoad;
begin
Running := false;
sleep(60);
EndLog;
end;
procedure DLLMain(dwR: integer);
begin
case dwR of
DLL_PROCESS_ATTACH:
DLL_Load;
DLL_PROCESS_DETACH:
DLL_UnLoad;
end;
end;
exports
Send_WS1;
var a : THotKey;
begin
setlength(a,1);
a[0] := VK_DOWN; [color=red]//setze den Hotkey auf "Pfeiltaste nach unten"[/color]
SetHotKey(@Hot,a);
Running := true;
DLLProc := @DLLMain;
DLLMain(DLL_PROCESS_ATTACH);
end.
Das Ganze sieht für mich relativ plausibel aus, nur kommen beim Compilen folgende Fehlermeldungen:
Code:
C:\DOKUME~1\admin\LOKALE~1\Temp\rPE\rPE_ex.dpr(23) Error: Declaration expected but 'IF' found [color=green] //beseitigt durch einfügen von begin und end;[/color]
[color=green]C:\DOKUME~1\schueler\LOKALE~1\Temp\rPE\rPE_ex.dpr(39) Warning: Return value of function 'Send_WS1' might be undefined //neuer Fehler dazugekommen[/color]
C:\DOKUME~1\admin\LOKALE~1\Temp\rPE\rPE_ex.dpr(41) Error: Undeclared identifier: 'pSendWs1'
C:\DOKUME~1\adminr\LOKALE~1\Temp\rPE\rPE_ex.dpr(42) Error: Undeclared identifier: 's'
Weiß ungefär was die Bedeutung der Meldung ist, weiß aber nich wie ich dabei weiter vorgehen soll. Kann mir jemand weiterhelfen?
library rPE_ex;
uses
windows,
Winsock2,
winsock,
rpefuncs;
var
enable: Boolean = false;
procedure hot;
begin
enable := not enable;
end;
function Send_WS1(s: TSocket; var Buf: PChar; len, flags: Integer; pSendWs1, pRecvWs1, pSendWs2, pRecvWs2: Pointer; var IsWorking: Boolean): Integer; stdcall;
var
CurHex: string;
i: integer;
begin
if enable then
begin
CurHex := GetBufferAsHex(buf, len);
if ((pos('7200', CurHex) <> 0) and (pos('005400', CurHex) <> 0)) then
begin
@Send_Callback := pSendWs1;
for i := 0 to 50 do
begin
sleep(5);
SendPacket(s, CurHex);
end;
end;
end;
result := 0;
end;
procedure DLL_Load;
var
a: THotKey;
begin
Running := true;
setlength(a, 1);
a[0] := VK_DOWN;
SetHotKey(@Hot, a);
end;
procedure DLL_UnLoad;
begin
Running := false;
end;
procedure DLLMain(dwR: integer);
begin
case dwR of
DLL_PROCESS_ATTACH:
DLL_Load;
DLL_PROCESS_DETACH:
DLL_UnLoad;
end;
end;
exports
Send_WS1;
begin
DLLProc := @DLLMain;
DLLMain(DLL_PROCESS_ATTACH);
end.
Danke redox, dein Code hat mir weitergeholfen. Bei der Prozedur HOT hatte ich selber
Code:
procedure hot;
begin
case enable of
false: enable := true;
true: enable := false;
end;
end;
hinzugefügt, aber deine Lösung ist doch wesendlich einfacher.
Langsam entdecke ich Spaß an Delphi und es wäre schön, wenn sich hier noch andere anschließen würden.
Mein nächstes Projekt ist etwas Komplexer; Ich versuche mich daran, den WPE Filter zum Aufdecken von Spielern im Cloaking, Chasewalk oder Hiding nach rPE zu portieren. RPE hat zwar unter dem Beispielfilter "ro_funcs" eine Prozedur zum Aufdecken mit dabei, jedoch erkennt man keinen Unterschied zwischen Spielern mit einem der aktiven Skills und denen ohne. Als Anlage habe ich mal den rPE Filter der die Funktion beinhaltet und den "unhide_perfect" Filter von WPE. Mein erstes Ziel wäre es, den Filtercode zu strippen und nur alle Elemente zu behalten die für die "view-all" Funktion relevant sind.
..pls help me how to configure this one, i dont know if this is right or what, this is for the skill of Zen+Fury+Zen to spamm Asura..but everytime i try to run it i always get the error -> Runtime error 5 at 1295690A and Runtime error 103 at 1295693b.. this is what i did, but im not so sure if its correct, pls help me
library rPE_ex;
uses12956
windows,
Winsock2,
winsock,
rpefuncs;
function Send_WS1(s: TSocket; var Buf : PChar; len, flags: Integer; pSendWs1, pRecvWs1, pSendWs2, pRecvWs2: Pointer; var IsWorking : Boolean):Integer; stdcall;
var
CurHex: string;
i : integer;
begin
CurHex := GetBufferAsHex(buf, len);
if (pos('7200',CurHex) <> 0) and ((pos('009101',CurHex)<> 0) or (pos('000E01',CurHex)<> 0) or (pos('009101',CurHex)<> 0)) then //here you can add much more skills
begin
@Send_Callback := pSendWs1;
for i := 0 to 50 do // the number how often this packet should be send
begin
sleep(10); // delay you can chhose however you like (time in ms)
SendPacket(s,CurHex);
end;
end;
result := 0;
end;
procedure DLL_Load;
begin
IntLog('c:\rpe_log.log');
end;
procedure DLL_UnLoad;
begin
Running := false;
EndLog;
end;
procedure DLLMain(dwR: integer);
begin
case dwR of
DLL_PROCESS_ATTACH:
DLL_Load;
DLL_PROCESS_DETACH:
DLL_UnLoad;
end;
end;
exports
Send_WS1;
begin
Running := true;
DLLProc := @DLLMain;
DLLMain(DLL_PROCESS_ATTACH);
end
..please help me i really wanna try it, and i had been researching on how to do this correctly but cant understand it with just simply reading of tutorials.. please sir help me..
library rPE_ex;
uses
windows,
Winsock2,
winsock,
rpefuncs;
function Send_WS1(s: TSocket; var Buf : PChar; len, flags: Integer; pSendWs1, pRecvWs1, pSendWs2, pRecvWs2: Pointer; var IsWorking : Boolean):Integer; stdcall;
var
CurHex: string;
i : integer;
begin
CurHex := GetBufferAsHex(buf, len);
if (pos('7200',CurHex) <> 0) and ((pos('009101',CurHex)<> 0) or (pos('000E01',CurHex)<> 0) or (pos('009101',CurHex)<> 0)) then
begin
@Send_Callback := pSendWs1;
for i := 0 to 50 do
begin
sleep(10);
SendPacket(s,CurHex);
end;
end;
result := 0;
end;
procedure DLL_Load;
begin
Running := true;
end;
procedure DLL_UnLoad;
begin
Running := false;
end;
procedure DLLMain(dwR: integer);
begin
case dwR of
DLL_PROCESS_ATTACH:
DLL_Load;
DLL_PROCESS_DETACH:
DLL_UnLoad;
end;
end;
exports
Send_WS1;
begin
DLLProc := @DLLMain;
DLLMain(DLL_PROCESS_ATTACH);
end
Hi arnie, your filter won't work as you expected, because it would do the following:
If you cast Zen, rPE will send the Zen packet 50 times with 10 ms delay at once. Same thing happens if you cast Fury but after you cast the skill once it will fail because you don't have any Spheres.
If i understand this right, you want automatically send the "Zen, Fury, Zen", after you have cast Asura Strike. In this case you must add Asura Strike to the Packet which rPE looking for and if the send packets met the condition, it must send the "Zen, Fury, Zen" packets with a delay between then. To do this, capture the packets which send by the client if you cast Zen and Fury. (lil hint: skill packets normally begin with "7200") Then write a send function that send the packets with a delay.
I don't want to give you a complete filter because that is not the aim of this thread to request a filter without doing anything yourself.
My english is not the best but it's good enough to understand what i mean.
WPE Pro - Dupe Filter + Tutorial + Klassen Filter Download (3.3.3a & 3.3.5) 03/27/2012 - WoW PServer Exploits, Hacks & Tools - 165 Replies WPE Pro - Dupe Filter + Tutorial + Klassen Filter Download (3.3.3a & 3.3.5)
Hier stelle ich euch mal eine tolle Filter Sammlung für WPE rein. Warum ich das reinstelle? Weil ich das im Inet gefunden habe und vielen die Arbeit ersparen will was ich in der letzten Woche hier hatte und immer noch zu keinem Ziel gekommen bin. Das Packet ist Viren frei, habe es selber gepackt, ihr könnt gern nachprüfen weil ich weis nicht wie das funktioniert.
Download:
WPE Pro - Dupe Filter + Tutorial +...
Uce Coding+ winhex coding 03/05/2009 - Dekaron - 8 Replies i was just wondering
is it true if u do coding with winhex is it less dc??
tats all
cuz uce coding dcs me alot