Ломаем наяву EGOiST/TSRh (icq: 8507375) Хакер, номер #088, стр. 088-074-5 _aStringString public final String _aStringString(String s) { String s1 = s; String s2; return s2 = (new e())._aStringString(s1); } Отсюда идет просто перенаправление в класс e.class в одноименную функцию. Что ж, заглянем и туда: _aStringString в e.class public final String _aStringString(String s) { byte abyte0[]; int i = (abyte0 = _aStringaB(s)).length; StringBuffer stringbuffer = new StringBuffer(i * 2); for(int k = 0; k < i; k++) { int j; if((j = abyte0[k] & 0xff) < 16) stringbuffer.append('0'); stringbuffer.append(Integer.toHexString(j)); } String s1; return s1 = stringbuffer.toString().toLowerCase(); } Опять наш ключ отсылают дальше, потом результат переводят в хекс строку и в нижний регистр, ну и возвращают обратно. Из _aStringaB(String s) отправляют прямиком в _aaIIV(int ai[], int i), предварительно в _aStringaI(String s) переведя наш ключ в массив. А в _aaIIV видно знакомые константы: _aaIIV в e.class public final void _aaIIV(int ai[], int i) { ai[i >> 5] |= 128 << i % 32; ai[((i + 64 >>> 9) << 4) + 14] = i; int j1 = 0x67452301; int k1 = 0xefcdab89; int l1 = 0x98badcfe; int i2 = 0x10325476; for(int j2 = 0; j2 < ai.length; j2 += 16) Как ты догадался, это - алгоритм мд5. Так, теперь давай вернемся в начало, то есть в b.java. Получается, что m_bString присваивает мд5 хэш нашего ключа. Немного разобрались. Давай смотреть дальше. В функции _evV() идет запуск потока текущего класса. Далее в текущем классе вызывается функция run(). Вот туда и заглянем: run() в b.class public final void run() { Alert alert; try { k._aStringSStringString(null, m_aString, m_bString, "1.31.1000", true); byte abyte0[] = m_bString.getBytes(); m_aRecordStore.setRecord(1, abyte0, 0, abyte0.length); int i = 0; try { int j = getWidth(); int l = getHeight(); int i1 = UltraIM.m_aDisplay.numColors(); int j1 = 0; do { i1 >>= 1; j1++; } while(i1 > 1); String s; i = Integer.parseInt(s = "" + j + l + j1); } catch(Exception _ex) { } if(i > 0) k._bIStringV((i - 0x15f90) * 11, m_bString, null); _cvV(); Итак, ключ (m_aString) и хэш ключа (m_bString) передаются в функцию _aStringSStringString(String s, String s1, String s2, String s3, boolean flag), находящуюся в k.class. _aStringSStringString в k.class public static final String _aStringSStringString(String s, String s1, String s2, String s3, boolean flag) throws ax { HttpConnection httpconnection; String s4; String s5; httpconnection = null; s4 = "0"; StringBuffer stringbuffer = new StringBuffer(); if(s1 != null) stringbuffer.append("a=" + s1 + "&"); if(s2 != null) |