www.VWITTICH.de
Hallo alle TREMER,
muss hier noch mal mit meinem JAVA-Problemchen ankommen. Es geht um folgenden Script-Abschnitt:
| php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
|
<?php private static String a(String s1)
{
char ac[];
int i1;
int j1;
ac = s1.toCharArray();
i1 = ac.length;
j1 = 0;
if(i1 > 1) goto _L2; else goto _L1
_L4:
ac[j1] ^= k1;
break; /* Loop/switch isn't completed */
_L1:
int k1;
switch(j1 % 5)
{
case 0: // '\0'
k1 = 0x57;
break;
case 1: // '\001'
k1 = 10;
break;
case 2: // '\002'
k1 = 41;
break;
case 3: // '\003'
k1 = 88;
break;
default:
k1 = 104;
break;
}
if(true) goto _L4; else goto _L3
_L5:
ac[i1] ^= k1;
_L3:
j1++;
if(i1 != 0) goto _L2; else goto _L5
_L2:
if(j1 >= i1)
return new String(ac);
goto _L1
} ?> |
|
Das ist im Prinzip nur die Funktionsweise des Script es muss jetzt in ein funktioniererndes Script umgewandelt werden, zu mal diese GOTO Anweisung auch bescheuert bzw. eher verpönt sind.
Ich hab da schon allerlei mit diversen IF-ELSE-Schleifen herumprobiert glaube aber eher das eine FOR- oder WHILE Schleife angebracht ist. Zur Not hab ich gesehen das es auch eine Möglichkeit gibt per SWITCH Anweisung das darzustellen. Zur Information das Script stammt aus einer decompilten Datei und sieht daher zu sch***e aus.
Da meine Scriptversuche bisher gescheitert sind habe ich die Frage ob mir jemand einen konkreten Hinweis bzw. eine Scriptlösung geben?
MFG Valentin
Donut
hm mir ist nich ganz klar, was mit dieser Methode bezweckt werden soll, ich hab noch nie so auf Char-Array gearbeitet, für mich sieht das so aus, also ob einzelne elemente umgestellt/verändert werden, nunja.
Deweiteren finde ich den code nicht sehr durchsichtig, ein Beipspiel:
in Zeile 9: Hier geht man nur zu _L2, wenn i1 größer 1 ist
| php: |
1:
|
<?php if(i1 > 1) goto _L2; else goto _L1 ?> |
|
Zeile 44: und die rahmenbedingen für das durchführen der Argumente in _L2 ist: j1 >= i1, wobei j1 = 0 gilt.
| php: |
1:
|
<?php if(j1 >= i1) ?> |
|
Würde bedeuten:
Gehe zu L2, wenn i1 > 1
Führe L2 aus, wenn 0 > i1
-> unmöglich.
Meine empfehlung:
Mach dir klar, was die Methode im gesamtzusammenhang bezweckt, und schreibe sie neu
(wenn das ganze doch sinn machen sollte, hab ichs net verstanden

)
www.VWITTICH.de
hmmm... hab da eben auch schon einiges an überlegungen angestellt... aber da mir eben auch nicht ganz klar ist was dieser Script-Abschnitt soll ist es da nicht ganz einfach nen das ganze neu zu schreiben... daher auch meine frage hier...
was du an deinen überlegungen nicht ganz bedacht hast ist das bei _L3 ja zu j1 immer 1 dazu gezählt wird und dadurch _L2 irgendwann schon ausgeführt wird.
Ein Versuch von mir ist z.B.:
| php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
|
<?php private static String a(String s1){ // z.B. a("?~](Rx%^/\037yn\\*\001\"y\007;\007:%");
char ac[]; // was bezweck charim gegenteil zu int?
int i1;
int j1;
int k1;
ac = s1.toCharArray();
i1 = ac.length; //z.B. 36
j1 = 0;
while (j1 < i1){ // hab j1 >= i1 in j1 < i1 geändert damit die Schleife Sinn macht
switch(j1 % 5){
case 0: // '\0'
k1 = 0x57;
break;
case 1: // '\001'
k1 = 10;
break;
case 2: // '\002'
k1 = 41;
break;
case 3: // '\003'
k1 = 88;
break;
default:
k1 = 104;
break;
}
ac[i1] ^= k1; // z.B. ac[36] = ... was bedeute ^=
j1++;
}
return new String(ac);
} ?> |
|
Doch entspricht das dem original Script? Ich glaube dieser Teil des Scriptes wird irgendwie benutz um verschlüsselte String aufzulösen... Ich hab auch mal so nen original String als Kommentar eingefügt...
Nach meiner überlegung kann man _L4 weg lassen das sich if(true) nicht werfüllen wird...
Auch der in _L3 der Sprund zu _L2 ergibt keinen sinn das der Fall das i1 != 0 dort nicht eintretten wird...
Freude mich über weitere Tipps & Bemerkungen...
MFG Valentin
Alex3683
Kann das sein, dass das einen String irgendwie verschlüsselt? ^= ist nämlich XOR mit direkter Zuweisung und ich wüsste nicht wo das sonst Sinn macht.
In was für einem Applet ist denn die Funktion gewesen und in welchem Zusammenhang wird sie aufgerufen?
Wie Donut bereits gesagt hat, ist neuschreiben evtl. wirklich die beste Alternative.
www.VWITTICH.de
Joa könnte ne Art verschlüsslung sein... bzw. warscheinlich eher ne entschlüsslung... die Funktion wird soweit ich das nachvoll zeihen kann z.B. so aufgerufen:
| php: |
1:
|
<?php a("?~](Rx%^/\037yn\\*\001\"y\007;\007:%"); ?> |
|
Ich würd ja auch am liebsten einfach das JAVA neu schreiben aber ich hab so gut wie gar keine Ahnung wie ist das anstellen soll um so ein Resultat zu erzielen:
schau hier
Ansich ist das ja alles Top, nur stört dieses verlinkte Seite wenn man darauf klickt...
Aber wenn das irgendwie machbar ist würd ich das natürlich auch selber aufsetzen
MFG Valentin
Alex3683
Cooler Effekt :-)
Hab nen Vorschlag. Dekomplier das nochmal und häng die ungeänderte, dekompilierte Version mal hier im Forum an. Dann schau ich mir das mal komplett an. Das sollte ja zu machen sein.
www.VWITTICH.de
Das ist mal ne cool Idee

leider kann ich irgendwie keine Anhänge hier im Forum hochladen... findest die Dateien aber in ner RAR gepackt
hier
Die haben halt alle diesen bescheuert Script abschnitt drinne.... so als wäre das irgendwie der Schüssel... außerdem ist mir nicht ganz klar geworden durch welchen Befehl den Backcheck zu dieser Website von dem Autoren ausführt...
Soweit ich das feststellen konnte müßte das eigentlich mit der Datei WrApp.java zutun haben... deshalb war meine Idee nur diese Datei zu fixen und die anderen im orignial Zustand zu belassen...
Die originalen sind übrigens unter dem gleichen Dateinamen nur mit der Endung *.jar zu finden und lassen sich mit nem als *.zip entpacken...
Gute Nacht & beste Grüße
Valentin
www.VWITTICH.de
Und
Alex3683 was meinste? Läst sich da was machen oder soll ich lieber aufgeben?
Mit besten Grüßen
Valentin
Alex3683
Sorry, hatte nicht gesehen, dass du schon geantwortet hattest. Ich schaus mir gerade mal an.
EDIT: Habe gerade auch was dazu gefunden, dass das goto zwar in Java reserviert ist, aber noch nicht implementiert ist. Wahrscheinlich wurde das mit einem sehr exotischen Compiler kompiliert oder aber der Decompiler hat das so übersetzt.
EDIT 2: Im manifestfile stehts auch. Das scheint eine ältere Java version gewesen zu sein, in der das früher mal implementiert war.
Alex3683
Habe mal das Java SDK 1.2.2 installiert und damit probiert, das klappt aber leider auch nicht. Ich schau mal, wie leicht sich das in IF-Abfragen packen lässt.
Alex3683
Gibt ne einfachere Lösung:
Hier kannste das alles downloaden und über den parameter "url" eine beliebige URL setzen auf die man nach Klick springen soll. Schau dir dafür mal waterpic2.html an. Ansonsten ist waterpick.html komplett ohne Link falls du das willst.
www.VWITTICH.de
Hmmm... ich weiß nicht ganz ob ich da was falsch verstanden habe... aber das sind ja im Prinzip nur genau die Dateien wie ich sie auch schon habe...
Das Problem an dem ganzen Tool ist das man seinen URL registrieren lassen muss damit man die Wahl hat einen Link oder eben keinen einzustellen... hat man ihn nicht registriert so erscheint immer, egal was man eingestellt hat, der durius.com-Link...
Deshalb ja der ganze Aufwand das irgendwie zu umgehen...
Aber dennoch schon mal vielen dank für das nach schauen...
Besten Gruß
Valentin
Alex3683
| Zitat: |
| Original von www.VWITTICH.deDas Problem an dem ganzen Tool ist das man seinen URL registrieren lassen muss damit man die Wahl hat einen Link oder eben keinen einzustellen... hat man ihn nicht registriert so erscheint immer, egal was man eingestellt hat, der durius.com-Link... |
Also ich habe das probiert und was ich bei dem parameter "url" eingestellt hatte, hat der auch genommen. Eventuell prüft der, obs eine absolute URL ist. Ich habs mit
http://www.google.de getestet und das funktionierte wunderbar.
Ein Beispiel in dem ZIP-File hatte auch gar keinen Link. Wie gesagt, schau sie dir mal an.
www.VWITTICH.de
du haste es aber nicht auf nem Server probiert oder? lokal ist das kein Problem sobald du das auf nen Server lädst... checkt der erst mal ob deine URL registriert ist...
deshalb wird
hier dann auch nicht der angegebene bzw. vorgegebene url angezeigt...
besten gruß & gute nacht
valentin
Alex3683
Sorry, stimmt, online hatte ichs nicht getestet. Das scheint der wirklich zu kontrollieren.
Mit dem Decomplier wirst du aber glaub ich leider auch wenig Erfolg haben.
Lass es am besten einfach weg von deiner Seite, da das sowas ist, was jeder beim ersten mal toll findet und danach nur noch nervt und wegklickt. ;-)
www.VWITTICH.de
Hmmm... hast wohl recht... vll. eine letzte idee kann ich nicht irgendwie verhintern das das applet auf eine andere seite zugreift... ähnlich wie wenn ich es lokal teste?
gruß valentin
Alex3683
hm, eine etwas ungewöhnliche Möglichkeit dafür hätte ich eventuell. Zuerstmal müsstest du rausfinden, welche Seite das Applet genau versucht zu öffnen. Dann kannst du in der hosts Datei deines Webservers die Domain auf einen eigenen Rechner oder direkt auf localhost (127.0.0.1) umleiten, eine eigene Antwort schicken und schauen, wie sich das Applet verhält.
Das ist dann aber von hinten durch die Brust ins Auge oder wie man das sagt :-)