Сейчас на форуме: 2nd, morgot, Rio, CDK123, zds, tyns777, tihiy_grom (+5 невидимых)

 eXeL@B —› Программирование —› Java2C++
Посл.ответ Сообщение


Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 26 сентября 2008 03:23 · Поправил: mak
· Личное сообщение · #1

=) Какие есть варианты перевода кода java на С++ или другой язык ? Имеется ввиду сам исходник. Екзе тоже можно было , но есть проблемы с компиляцией , нет переменных , но на сам алгоритм это не влияет. Поэтому дубляж на Си было бы классно.

Поправка скомпилить получилось , но скомпилино было jexecreator ом. Рт кода вроде и следа не осталось =(

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 26 сентября 2008 03:49
· Личное сообщение · #2

AFAIK только переписывание с ноля, особенно если вызовы библиотек. Ну а если мелкая функция, hash какой-нить, то можно править пока не скомпилится.




Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 26 сентября 2008 04:30
· Личное сообщение · #3

Вроде вызовово как таковых нет. Есть операции математические.

Code:
  1. public int nextInt(int n) {
  2.     if (n<=0)
  3.       throw new IllegalArgumentException("positive");
  4.     if ((& -n) == n)  // i.e., n is a power of 2
  5.       return (int)((* (long)next(31)) >> 31);
  6.     int bits, val;
  7.     do {
  8.       bits = next(31);
  9.       val = bits % n;
  10.     } while(bits - val + (n-1) < 0);
  11.     return val;
  12.   }


Собрал я своей студией 2005 ...сначала классовую либу , потом ехе , разницы не получил реверсить ужасно. Идой разбираю код как обыкновенный код , то идет бред. Требует разобратть технологией НЭТ , разбираю , код весь распознан , но там ж...а я потерялся аж от таких кодов.

Значит всетаки чистый конвертер исходника в исходник. Другие варианты не пойдут , как быть ?

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 26 сентября 2008 04:50
· Личное сообщение · #4

Вот прогу нашел переводчик типо , скомпилил его студией 6 вроде все окей прошло. А ехе не работает , то есть работает но там эрроры какието на конвертацию

fd5a_25.09.2008_CRACKLAB.rU.tgz - java2C.rar

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 26 сентября 2008 05:18
· Личное сообщение · #5

Выше приведенные вопросы остались , а пока нашел вроде крутой конвертер 2008 года. Скомпилить у меня чего то не получилось. Попробуйте ПЛЗ. Судя по описанию должно подойти.

1f27_25.09.2008_CRACKLAB.rU.tgz - Java2C_0_82.zip

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 26 сентября 2008 06:17
· Личное сообщение · #6

mak, это должно скомпилется почти без изменений. Выесни только что такое "next(31)".

Про .net - есть три пути:
a) массаж исходника
б) смотреть IL и писать на С или асм
c) сотреть под отладчиком - JIT переведёт тебе всё в x86




Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 26 сентября 2008 13:33
· Личное сообщение · #7

Спасибо , нет там нету записей что такое некст 31. Похожего по крайней мере нет.

Code:
  1.   private final long multiplier = 0x5DEECE66DL;
  2.   private final long addend = 0xBL;
  3.   private final long mask = (1L << 48) - 1;
  4.   private boolean haveNextNextGaussian = false;

Вот такой кусок тоже на си легко пойдет ? Я пробовал в оле грузить прогу готовую. прога запускается останова нигде нет , только на рет по выходу. Рипнуть код не получилось. Массаж исходника наверное приемлемее.
Есть такая часть

Code:
  1. import java.util.*;


но ее думаю на си не перевести. Но ладно попробую на си все перекинуть. А там каждую часть по отдельности пробовать скомпилить

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 26 сентября 2008 21:27
· Личное сообщение · #8

mak, пардон, я про .net/CLR/IL отписал - там в VS2005 отладчике можно посмотреть x86 код выплюнутый JIT-ом. Про джаву... перепивый на С - песец.




Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 26 сентября 2008 21:47
· Личное сообщение · #9

s0larian пишет:
перепивый на С - песец.


Это диагноз что трудно ? или просто легче ?

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 26 сентября 2008 21:55
· Личное сообщение · #10

Я имел ввиду что придётся переписывать, т.к. неоткуда сделать copy/paste сгенерированного кода...




Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 27 сентября 2008 03:18
· Личное сообщение · #11

Вообщем собрал я сам выше описанные проги конверторы все. И все они ну очень косячные. Яву я не знаю. Помогите перевести короткий отрывок на Си , далее я уже сам по анологии.

bccc_26.09.2008_CRACKLAB.rU.tgz - Randomize.java

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 27 сентября 2008 06:17 · Поправил: s0larian
· Личное сообщение · #12

mak, вот держи на С++. Сразу говорю, без знания языка такие куски не перевести.

Code:
  1. class Randomize {
  2. private:
  3.     int64 seed, multiplier;
  4.     static const int64 addend = 0xBL;
  5.     static const int64 mask = (1ull << 48) - 1;
  6.     bool haveNextNextGaussian;
  7. public:
  8.     Randomize(int64 seed) 
  9.         : multiplier(0x5DEECE66DL), haveNextNextGaussian(false)
  10.     {
  11.         setSeed(seed);
  12.     }
  13.     void setSeed(int64 seed) {
  14.         seed = (seed ^ multiplier) & mask;
  15.         haveNextNextGaussian = false;
  16.     }
  17.     int nextInt(int n) {
  18.         if (n<=0)
  19.             throw std::exception("positive");
  20.         if ((& -n) == n)  // i.e., n is a power of 2
  21.             return (int)((* (int64)next(31)) >> 31);
  22.         int bits, val;
  23.         do {
  24.             bits = next(31);
  25.             val = bits % n;
  26.         } while(bits - val + (n-1) < 0);
  27.         return val;
  28.     }
  29.     int next(int bits) {
  30.         int64 nextseed = (seed * multiplier + addend) & mask;
  31.         seed = nextseed;
  32.         return (int)(nextseed >> (48 - bits));
  33.     }
  34. };





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 27 сентября 2008 11:51
· Личное сообщение · #13

s0larian Спасибо =) , там не много переводить , аналогичных кусков тоже много. На это и расчет , увижу как тут переменные перевелись и код и попробую. А там будут ошибки , так уже можно подумать где проблема. Сэнкс

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube



 eXeL@B —› Программирование —› Java2C++
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати