Abend Leute,
da ich jetzt öfters mitbekommen habe, wie viele herum jammern, dass sie keine Pointer suchen können, dachte ich mir, dass ich Ceberus Bypass update. Gesagt getan, ich habe neue Adressen gesucht und eine neue Stelle genoppt, damit das HackShield nicht geladen wird. Credits gehen an Ceberus, da ich seine Source genommen und upgedatet habe.
Eine fertige .exe Datei habe ich mal hochgeladen.
Download: 4Story Bypass.rar (5,01 KB) - uploaded.to
Virustotal:VT
Beweis:
ToDo-List: -FindPatter finden zum automatischen updaten. []
_________________________________________________________________
Other Stuff:
Nachdem ich mich mit dem reversen des Client's beschäftigt habe, habe ich mir 2 Sachen besonders intensiv angeschaut. Zum einen die Chat-Funktion und zum anderen die CreateCharacter-Funktion. Diese Informationen möchte ich euch nicht vorenthalten.
Die Chat-Funktion besteht aus genau 7 verschiedenen Parametern, hier einmal die grobe Funktion:
Noch zu erwähnen wäre, dass der gesendete Text immer wie folgt aufgebaut ist:
Die Arten der Chat-Funktion sehen wie folgt aus
Ich tippe, dass die Nummer 3 entweder der Upp-chat ist oder GM-chat. Hier ist mal ein Beispiel, wie er im Stack zu finden ist:
Alles anzeigen
Nun kann man die einzelnen Argumente perfekt ablesen.
Ich habe nun die aktuelle Chat-Funktion gefunden, die 4Story benutzt:
Spoiler anzeigen
Alles anzeigen
Warum ich das euch schreibe ist einfach, damit könnte man eine ASM-ChatFunktion schreiben, wodurch man blitzschnell Spamen kann und falls es eine Chatsperre geben sollte, diese umgehen. Leider fehlen mir noch ein paar Parameter, die ich erst herausfinden muss, aber vielleicht schafft einer von euch ja was daraus zu machen. :) Ich werde mich mal am Wochenende vielleicht ran setzten.
Hierzu sage ich vorab habe ich noch nicht die richtige Stelle im Client gefunden, aber die Funktion sieht ungefähr so aus:
Ich denke, dass die Parameter klar sein müssen, aber hier nochmal eine genauere Liste:
Beim Parameter Hair und HairColor ist es so, dass Typ A = 0, Typ B = 1, Typ C = 2 usw. ist.
Ein Code im Stack sieht wie folgt aus:
Alles anzeigen
Vergleicht man die Parameter mit dem Beispiel, dann ist klar, welchen Character ich erstellt habe.
Bei den letzten 4 Parametern bin ich mir sehr unsicher, die letzten 3 könnte die Position des Characters sein, an dem er erstellt wurde (X,Y,Z), wobei man bei 4Story immer an der selben Stelle aufkommt.
Was könnte man damit machen?
Das ist einfach, man könnte sich theoretisch Charackter erstellen mit unerlaubten Namen, Überschreitung der maximalen Länge des Namens und man könnte unendlich viele Character auf kürzester Zeit erstellen, die gegeben falls den Server crashen könnten. Aber das ist nur eine Spekulation.
In kürzester Zeit werde ich mein altes Projekt, welches ich vor ein paar Monaten erstellt habe, fertig machen und veröffentlichen. Hier mal ein Bild dazu:

Es ist ein PacketEditor, welcher bis jetzt nur die HShield Packets richtig anzeigt, aber dies wird bald behoben sein. Außerdem ist es möglich, mit dem Anklicken einer Zeile, den Hex String in ASCII zu wandeln.
Was haltet ihr vom dem Programm, eine gute Idee oder eher nicht ?
So, dass war's jetzt erst mal von mir, ich hoffe ihr gebt Feedback zu meinen Sachen. Bis zum nächsten mal ;)
MFG
da ich jetzt öfters mitbekommen habe, wie viele herum jammern, dass sie keine Pointer suchen können, dachte ich mir, dass ich Ceberus Bypass update. Gesagt getan, ich habe neue Adressen gesucht und eine neue Stelle genoppt, damit das HackShield nicht geladen wird. Credits gehen an Ceberus, da ich seine Source genommen und upgedatet habe.
Eine fertige .exe Datei habe ich mal hochgeladen.
Download: 4Story Bypass.rar (5,01 KB) - uploaded.to
Virustotal:VT
Beweis:

ToDo-List: -FindPatter finden zum automatischen updaten. []
_________________________________________________________________
Other Stuff:
Nachdem ich mich mit dem reversen des Client's beschäftigt habe, habe ich mir 2 Sachen besonders intensiv angeschaut. Zum einen die Chat-Funktion und zum anderen die CreateCharacter-Funktion. Diese Informationen möchte ich euch nicht vorenthalten.
Die Chat-Funktion besteht aus genau 7 verschiedenen Parametern, hier einmal die grobe Funktion:
Noch zu erwähnen wäre, dass der gesendete Text immer wie folgt aufgebaut ist:
Die Arten der Chat-Funktion sehen wie folgt aus
Ich tippe, dass die Nummer 3 entweder der Upp-chat ist oder GM-chat. Hier ist mal ein Beispiel, wie er im Stack zu finden ist:
PHP-Quellcode
- FLÜSTERN:
- CPU Stack
- Address Value ASCII Comments
- 0018FD74 [00513154 T1Q ; /RETURN from TClient.0053B270 to TClient.00513154
- 0018FD78 /549A0920 šT ; |Arg1 = ASCII "rdrree4rew"
- 0018FD7C |00000000 ; |Arg2 = 0
- 0018FD80 |00000000 ; |Arg3 = 0
- 0018FD84 |258B2178 x!‹% ; |Arg4 = ASCII "aaaaaaaaaaaaaaad"
- 0018FD88 |549A0998 ˜ šT ; |Arg5 = ASCII "00000003hey"
- 0018FD8C |00000000 ; |Arg6 = 0
- 0018FD90 |033C1F30 0< ; \Arg7 = 33C1F30
Nun kann man die einzelnen Argumente perfekt ablesen.
Ich habe nun die aktuelle Chat-Funktion gefunden, die 4Story benutzt:
PHP-Quellcode
- CPU Disasm
- Address Hex dump Command Comments
- 0053B270 /$ 6A FF PUSH -1 ; TClient.0053B270(guessed Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7)
- 0053B272 |. 68 30DF6900 PUSH 0069DF30 ; Entry point
- 0053B277 |. 64:A1 0000000 MOV EAX,DWORD PTR FS:[0]
- 0053B27D |. 50 PUSH EAX
- 0053B27E |. 64:8925 00000 MOV DWORD PTR FS:[0],ESP ; Installs SE handler 69DF30
- 0053B285 |. 83EC 20 SUB ESP,20
- 0053B288 |. 894C24 04 MOV DWORD PTR SS:[LOCAL.9],ECX
- 0053B28C |. A1 D8177200 MOV EAX,DWORD PTR DS:[7217D8]
- 0053B291 |. 85C0 TEST EAX,EAX
- 0053B293 |. 6A 01 PUSH 1 ; /Arg2 = 1
- 0053B295 |. 8D4424 44 LEA EAX,[ARG.5] ; |
- 0053B299 |. C74424 2C 020 MOV DWORD PTR SS:[LOCAL.0],2 ; |
- 0053B2A1 |. 50 PUSH EAX ; |Arg1 => OFFSET ARG.5
- 0053B2A2 |. 74 4B JE SHORT 0053B2EF ; |
- 0053B2A4 |. E8 97A30400 CALL 00585640 ; \TClient.00585640
- 0053B2A9 |. 83C4 08 ADD ESP,8
- 0053B2AC |. 84C0 TEST AL,AL
- 0053B2AE |. 75 51 JNE SHORT 0053B301
- 0053B2B0 |. 8B4424 30 MOV EAX,DWORD PTR SS:[ARG.1]
- 0053B2B4 |. 83C0 F0 ADD EAX,-10
- 0053B2B7 |. C64424 28 01 MOV BYTE PTR SS:[LOCAL.0],1
- 0053B2BC |. 8D48 0C LEA ECX,[EAX+0C]
- 0053B2BF |. 83CA FF OR EDX,FFFFFFFF
- 0053B2C2 |. F0:0FC111 LOCK XADD DWORD PTR DS:[ECX],EDX
- 0053B2C6 |. 4A DEC EDX
- 0053B2C7 |. 85D2 TEST EDX,EDX
- 0053B2C9 |. 7F 08 JG SHORT 0053B2D3
- 0053B2CB |. 8B08 MOV ECX,DWORD PTR DS:[EAX]
- 0053B2CD |. 8B11 MOV EDX,DWORD PTR DS:[ECX]
- 0053B2CF |. 50 PUSH EAX
- 0053B2D0 |. FF52 04 CALL DWORD PTR DS:[EDX+4]
- 0053B2D3 |> 8B4424 3C MOV EAX,DWORD PTR SS:[ESP+3C]
- 0053B2D7 |. 83C0 F0 ADD EAX,-10
- 0053B2DA |. C64424 28 00 MOV BYTE PTR SS:[ESP+28],0
- 0053B2DF |. 8D48 0C LEA ECX,[EAX+0C]
- 0053B2E2 |. 83CA FF OR EDX,FFFFFFFF
- 0053B2E5 |. F0:0FC111 LOCK XADD DWORD PTR DS:[ECX],EDX
- 0053B2E9 |. 4A DEC EDX
- 0053B2EA |. E9 57010000 JMP 0053B446
- 0053B2EF |> E8 5CE60300 CALL 00579950
- 0053B2F4 |. 83C4 08 ADD ESP,8
- 0053B2F7 |. 50 PUSH EAX ; /Arg1
- 0053B2F8 |. 8D4C24 44 LEA ECX,[ARG.6] ; |
- 0053B2FC |. E8 2F99ECFF CALL 00404C30 ; \TClient.00404C30
- 0053B301 |> 53 PUSH EBX
- 0053B302 |. 55 PUSH EBP
- 0053B303 |. 8D4C24 08 LEA ECX,[LOCAL.10]
- 0053B307 |. 68 4D020000 PUSH 24D ; /Arg2 = 24D
- 0053B30C |. 51 PUSH ECX ; |Arg1 => OFFSET LOCAL.10
- 0053B30D |. E8 3E541000 CALL 00640750 ; \TClient.00640750
- 0053B312 |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
- 0053B314 |. 8B6C24 4C MOV EBP,DWORD PTR SS:[ESP+4C]
- 0053B318 |. 50 PUSH EAX ; /Arg2
- 0053B319 |. 55 PUSH EBP ; |Arg1
- 0053B31A |. E8 AA491200 CALL 0065FCC9 ; \TClient.0065FCC9
- 0053B31F |. 8BD8 MOV EBX,EAX
- 0053B321 |. 8B4424 18 MOV EAX,DWORD PTR SS:[ESP+18]
- 0053B325 |. 83C4 10 ADD ESP,10
- 0053B328 |. F7DB NEG EBX
- 0053B32A |. 1ADB SBB BL,BL
- 0053B32C |. 83C0 F0 ADD EAX,-10
- 0053B32F |. FEC3 INC BL
- 0053B331 |. 8D50 0C LEA EDX,[EAX+0C]
- 0053B334 |. 83C9 FF OR ECX,FFFFFFFF
- 0053B337 |. F0:0FC10A LOCK XADD DWORD PTR DS:[EDX],ECX
- 0053B33B |. 49 DEC ECX
- 0053B33C |. 85C9 TEST ECX,ECX
- 0053B33E |. 7F 08 JG SHORT 0053B348
- 0053B340 |. 8B08 MOV ECX,DWORD PTR DS:[EAX]
- 0053B342 |. 8B11 MOV EDX,DWORD PTR DS:[ECX]
- 0053B344 |. 50 PUSH EAX
- 0053B345 |. FF52 04 CALL DWORD PTR DS:[EDX+4]
- 0053B348 |> 84DB TEST BL,BL
- 0053B34A |. 74 05 JE SHORT 0053B351
- 0053B34C |. C64424 3C 07 MOV BYTE PTR SS:[ESP+3C],7
- 0053B351 |> 57 PUSH EDI
- 0053B352 |. 8D4C24 14 LEA ECX,[ESP+14]
- 0053B356 |. E8 65200A00 CALL 005DD3C0 ; [TClient.005DD3C0
- 0053B35B |. 8B4424 4C MOV EAX,DWORD PTR SS:[ESP+4C]
- 0053B35F |. 8B4C24 44 MOV ECX,DWORD PTR SS:[ESP+44]
- 0053B363 |. 8B5424 40 MOV EDX,DWORD PTR SS:[ESP+40]
- 0053B367 |. 8B7C24 3C MOV EDI,DWORD PTR SS:[ESP+3C]
- 0053B36B |. 50 PUSH EAX ; /Arg1
- 0053B36C |. 55 PUSH EBP ; |/Arg1
- 0053B36D |. 51 PUSH ECX ; ||/Arg1
- 0053B36E |. 52 PUSH EDX ; |||/Arg1
- 0053B36F |. 57 PUSH EDI ; ||||/Arg1
- 0053B370 |. 68 74510000 PUSH 5174 ; |||||/Arg1 = 5174
- 0053B375 |. 8D4C24 2C LEA ECX,[ESP+2C] ; ||||||
- 0053B379 |. C64424 4C 03 MOV BYTE PTR SS:[ESP+4C],3 ; ||||||
- 0053B37E |. E8 3D1F0A00 CALL 005DD2C0 ; |||||\TClient.005DD2C0
- 0053B383 |. 8BC8 MOV ECX,EAX ; |||||
- 0053B385 |. E8 B6230A00 CALL 005DD740 ; ||||\TClient.005DD740
- 0053B38A |. 8BC8 MOV ECX,EAX ; ||||
- 0053B38C |. E8 1F240A00 CALL 005DD7B0 ; |||\TClient.005DD7B0
- 0053B391 |. 8BC8 MOV ECX,EAX ; |||
- 0053B393 |. E8 78240A00 CALL 005DD810 ; ||\TClient.005DD810
- 0053B398 |. 8BC8 MOV ECX,EAX ; ||
- 0053B39A |. E8 A1230A00 CALL 005DD740 ; |\TClient.005DD740
- 0053B39F |. 8BC8 MOV ECX,EAX ; |
- 0053B3A1 |. E8 9A230A00 CALL 005DD740 ; \TClient.005DD740
- 0053B3A6 |. 807C24 40 01 CMP BYTE PTR SS:[ESP+40],1
- 0053B3AB |. 75 48 JNE SHORT 0053B3F5
- 0053B3AD |. 56 PUSH ESI
- 0053B3AE |. 8B7424 58 MOV ESI,DWORD PTR SS:[ESP+58]
- 0053B3B2 |. 8B46 08 MOV EAX,DWORD PTR DS:[ESI+8]
- 0053B3B5 |. 50 PUSH EAX ; /Arg1
- 0053B3B6 |. 8D4C24 1C LEA ECX,[ESP+1C] ; |
- 0053B3BA |. E8 11230A00 CALL 005DD6D0 ; \TClient.005DD6D0
- 0053B3BF |. 8B76 04 MOV ESI,DWORD PTR DS:[ESI+4]
- 0053B3C2 |. 8B06 MOV EAX,DWORD PTR DS:[ESI]
- 0053B3C4 |. 3BC6 CMP EAX,ESI
- 0053B3C6 |. 894424 44 MOV DWORD PTR SS:[ESP+44],EAX
- 0053B3CA |. 74 28 JE SHORT 0053B3F4
- 0053B3CC |. 8D6424 00 LEA ESP,[ESP]
- 0053B3D0 |> 8B40 10 /MOV EAX,DWORD PTR DS:[EAX+10]
- 0053B3D3 |. 8B88 E0030000 |MOV ECX,DWORD PTR DS:[EAX+3E0]
- 0053B3D9 |. 51 |PUSH ECX ; /Arg1
- 0053B3DA |. 8D4C24 1C |LEA ECX,[ESP+1C] ; |
- 0053B3DE |. E8 2D240A00 |CALL 005DD810 ; \TClient.005DD810
- 0053B3E3 |. 8D4C24 44 |LEA ECX,[ESP+44]
- 0053B3E7 |. E8 34680000 |CALL 00541C20 ; [TClient.00541C20
- 0053B3EC |. 8B4424 44 |MOV EAX,DWORD PTR SS:[ESP+44]
- 0053B3F0 |. 3BC6 |CMP EAX,ESI
- 0053B3F2 |.^ 75 DC \JNE SHORT 0053B3D0
- 0053B3F4 |> 5E POP ESI
- 0053B3F5 |> 8B4C24 10 MOV ECX,DWORD PTR SS:[ESP+10]
- 0053B3F9 |. 8D5424 14 LEA EDX,[ESP+14]
- 0053B3FD |. 52 PUSH EDX ; /Arg1
- 0053B3FE |. E8 2D110A00 CALL 005DC530 ; \TClient.005DC530
- 0053B403 |. 8D4C24 14 LEA ECX,[ESP+14]
- 0053B407 |. C64424 34 02 MOV BYTE PTR SS:[ESP+34],2
- 0053B40C |. E8 6F1B0A00 CALL 005DCF80 ; [TClient.005DCF80
- 0053B411 |. 8D47 F0 LEA EAX,[EDI-10]
- 0053B414 |. C64424 34 01 MOV BYTE PTR SS:[ESP+34],1
- 0053B419 |. 8D48 0C LEA ECX,[EAX+0C]
- 0053B41C |. 83CA FF OR EDX,FFFFFFFF
- 0053B41F |. F0:0FC111 LOCK XADD DWORD PTR DS:[ECX],EDX
- 0053B423 |. 4A DEC EDX
- 0053B424 |. 85D2 TEST EDX,EDX
- 0053B426 |. 5F POP EDI
- 0053B427 |. 7F 08 JG SHORT 0053B431
- 0053B429 |. 8B08 MOV ECX,DWORD PTR DS:[EAX]
- 0053B42B |. 8B11 MOV EDX,DWORD PTR DS:[ECX]
- 0053B42D |. 50 PUSH EAX
- 0053B42E |. FF52 04 CALL DWORD PTR DS:[EDX+4]
- 0053B431 |> 8D45 F0 LEA EAX,[EBP-10]
- 0053B434 |. C64424 30 00 MOV BYTE PTR SS:[ESP+30],0
- 0053B439 |. 8D48 0C LEA ECX,[EAX+0C]
- 0053B43C |. 83CA FF OR EDX,FFFFFFFF
- 0053B43F |. F0:0FC111 LOCK XADD DWORD PTR DS:[ECX],EDX
- 0053B443 |. 4A DEC EDX
- 0053B444 |. 5D POP EBP
- 0053B445 |. 5B POP EBX
- 0053B446 |> 85D2 TEST EDX,EDX
- 0053B448 |. 7F 08 JG SHORT 0053B452
- 0053B44A |. 8B08 MOV ECX,DWORD PTR DS:[EAX]
- 0053B44C |. 8B11 MOV EDX,DWORD PTR DS:[ECX]
- 0053B44E |. 50 PUSH EAX
- 0053B44F |. FF52 04 CALL DWORD PTR DS:[EDX+4]
- 0053B452 |> 8B4424 40 MOV EAX,DWORD PTR SS:[ESP+40]
- 0053B456 |. 83C0 F0 ADD EAX,-10
- 0053B459 |. C74424 28 FFF MOV DWORD PTR SS:[ESP+28],-1
- 0053B461 |. 8D48 0C LEA ECX,[EAX+0C]
- 0053B464 |. 83CA FF OR EDX,FFFFFFFF
- 0053B467 |. F0:0FC111 LOCK XADD DWORD PTR DS:[ECX],EDX
- 0053B46B |. 4A DEC EDX
- 0053B46C |. 85D2 TEST EDX,EDX
- 0053B46E |. 7F 08 JG SHORT 0053B478
- 0053B470 |. 8B08 MOV ECX,DWORD PTR DS:[EAX]
- 0053B472 |. 8B11 MOV EDX,DWORD PTR DS:[ECX]
- 0053B474 |. 50 PUSH EAX
- 0053B475 |. FF52 04 CALL DWORD PTR DS:[EDX+4]
- 0053B478 |> 8B4C24 20 MOV ECX,DWORD PTR SS:[LOCAL.2]
- 0053B47C |. 64:890D 00000 MOV DWORD PTR FS:[0],ECX
- 0053B483 |. 83C4 2C ADD ESP,2C
- 0053B486 \. C2 1C00 RETN 1C
Warum ich das euch schreibe ist einfach, damit könnte man eine ASM-ChatFunktion schreiben, wodurch man blitzschnell Spamen kann und falls es eine Chatsperre geben sollte, diese umgehen. Leider fehlen mir noch ein paar Parameter, die ich erst herausfinden muss, aber vielleicht schafft einer von euch ja was daraus zu machen. :) Ich werde mich mal am Wochenende vielleicht ran setzten.
2.Teil, CreateCharacter-Funktion:
Hierzu sage ich vorab habe ich noch nicht die richtige Stelle im Client gefunden, aber die Funktion sieht ungefähr so aus:
Ich denke, dass die Parameter klar sein müssen, aber hier nochmal eine genauere Liste:
Beim Parameter Hair und HairColor ist es so, dass Typ A = 0, Typ B = 1, Typ C = 2 usw. ist.
Ein Code im Stack sieht wie folgt aus:
PHP-Quellcode
- CPU Stack
- Address Value ASCII Comments
- 0018FD7C /00000002 ; |Arg1 = 2
- 0018FD80 |199E74A0 *tž ; |Arg2 = ASCII "fddffdfsdfsdfsd"
- 0018FD84 |7C356903 i5| ; |Arg3 = 7C356903
- 0018FD88 |00000001 ; |Arg4 = 1
- 0018FD8C |00000000 ; |Arg5 = 0
- 0018FD90 |00000000 ; |Arg6 = 0
- 0018FD94 |00000000 ; |Arg7 = 0
- 0018FD98 |00000001 ; |Arg8 = 1
- 0018FD9C |00000001 ; |Arg9 = 1
- 0018FDA0 |00000000 ; |Arg10 = 0
- 0018FDA4 |00000000 ; |Arg11 = 0
- 0018FDA8 |00000000 ; |Arg12 = 0
- 0018FDAC |00000000 ; \Arg13 = 0
Vergleicht man die Parameter mit dem Beispiel, dann ist klar, welchen Character ich erstellt habe.
Bei den letzten 4 Parametern bin ich mir sehr unsicher, die letzten 3 könnte die Position des Characters sein, an dem er erstellt wurde (X,Y,Z), wobei man bei 4Story immer an der selben Stelle aufkommt.
Was könnte man damit machen?
Das ist einfach, man könnte sich theoretisch Charackter erstellen mit unerlaubten Namen, Überschreitung der maximalen Länge des Namens und man könnte unendlich viele Character auf kürzester Zeit erstellen, die gegeben falls den Server crashen könnten. Aber das ist nur eine Spekulation.
INFO:
In kürzester Zeit werde ich mein altes Projekt, welches ich vor ein paar Monaten erstellt habe, fertig machen und veröffentlichen. Hier mal ein Bild dazu:

Es ist ein PacketEditor, welcher bis jetzt nur die HShield Packets richtig anzeigt, aber dies wird bald behoben sein. Außerdem ist es möglich, mit dem Anklicken einer Zeile, den Hex String in ASCII zu wandeln.
Was haltet ihr vom dem Programm, eine gute Idee oder eher nicht ?
So, dass war's jetzt erst mal von mir, ich hoffe ihr gebt Feedback zu meinen Sachen. Bis zum nächsten mal ;)
MFG