Сейчас на форуме: Lohmaty, tyns777, cppasm (+7 невидимых)

 eXeL@B —› Вопросы новичков —› помогите пожалуйста с java
Посл.ответ Сообщение

Ранг: 15.7 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 28 октября 2017 23:30 · Поправил: vitalik9
· Личное сообщение · #1

Имеется программа написанная на java.
Открыл с помощью архиватора, взял необходимый класс.
При помощи AndroChef Java Decompiler 1.0 декомпилировал.
Вопрос по коду.
Фрагмент кода который интересует.
private void f() {
HashMap var1 = new HashMap();
var1.put("key", this.e);
var1.put("hwid", this.d);
long var2 = System.currentTimeMillis();
var1.put("timestamp", String.valueOf(var2));
d var4 = c.a(a + "/api/v1/login", var1, (Proxy)null);
JSONObject var5 = new JSONObject(var4.a());
if(var5.has("access") && var5.get("access").equals("true") && var5.has("context")) {
String var6 = var5.get("context").toString();
String var7 = this.a(var6.replaceAll("[\]\[]", ""), var2);
this.a(new JSONArray(var7));
this.i();
this.g();
this.j();
this.o();
this.n();
this.m();
this.l();
this.h();
this.k();
} else {
System.exit(-1);
}
}
ответ с сервера приходит вот таким http://prntscr.com/h39f2z
но программа упорно не запускается.
Помогите пожалуйста




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 28 октября 2017 23:49
· Личное сообщение · #2

vitalik9 пишет:
но программа упорно не запускается.

ну дык по условиям и так видно, что одного "access=true" мало, в ответе еще должно присутствовать поле context в JSON формате. что в нём ожидается увидеть - смотри в this.a



Ранг: 15.7 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 29 октября 2017 11:54
· Личное сообщение · #3

не могу найти какой ответ должен быть
для context




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 29 октября 2017 12:32 · Поправил: -=AkaBOSS=-
· Личное сообщение · #4

там должны быть какие-то данные в формате {"какойто_параметр1":"какоето_значение1","какойто_параметр2":"какоето_значение2"} и так далее.
часто встречается ситуация, когда данные десериализуются напрямую в какой-то класс.
по приведенному куску кода угадать невозможно.



Ранг: 15.7 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 29 октября 2017 12:55
· Личное сообщение · #5

вот сам файл class
декомпиляцию делаю прогой AndroChef Java Decompiler
вопрос галочку нужно ставить


8ebd_29.10.2017_EXELAB.rU.tgz - Screenshot_1.png

Добавлено спустя 1 минуту
файл

55f3_29.10.2017_EXELAB.rU.tgz - a.class




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 29 октября 2017 13:56 · Поправил: -=AkaBOSS=-
· Личное сообщение · #6

ну вот и приплыли
Code:
  1. private void a(JSONArray jSONArray) {
  2.     Class class_ = null;
  3.     for (Object e2 : jSONArray) {
  4.         try {
  5.             Class class_2 = Class.forName(e2.toString().split(":")[0]);
  6.             if (class_ == null) {
  7.                 class_ = class_2;
  8.                 continue;
  9.             }
  10.             Object obj = class_2.newInstance();
  11.             String string = e2.toString().split(":")[1];
  12.             Field field = class_.getDeclaredField(string);
  13.             field.setAccessible(true);
  14.             field.set(class_, obj);
  15.         }
  16.         catch (ClassNotFoundException var5_6) {
  17.             var5_6.printStackTrace();
  18.         }
  19.         catch (IllegalAccessException var5_7) {
  20.             var5_7.printStackTrace();
  21.         }
  22.         catch (InstantiationException var5_8) {
  23.             var5_8.printStackTrace();
  24.         }
  25.         catch (NoSuchFieldException var5_9) {
  26.             var5_9.printStackTrace();
  27.         }
  28.     }
  29. }

таким образом в принципе можно запихнуть что угодно и куда угодно, в том числе важные для алгоритмов константы и проч.
без валидных данных далеко не уедешь



Ранг: 15.7 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 29 октября 2017 22:45
· Личное сообщение · #7

посоветуйте отладчик для java
чтоб можно было ставить точки останова



Ранг: 34.1 (посетитель), 118thx
Активность: 0.040.01
Статус: Участник

Создано: 30 октября 2017 00:29
· Личное сообщение · #8

NetBeans



Ранг: 15.7 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 30 октября 2017 00:55
· Личное сообщение · #9

программа сделана в жаве и собрана в exe
я распаковал exe архиватором.
декомпилировал
как лткрыть данный проект в NetBeans?



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 30 октября 2017 08:26
· Личное сообщение · #10

vitalik9 пишет:
как лткрыть данный проект в NetBeans?


Создать проект в нем и подключить исходники
для примера https://netbeans.org/kb/docs/java/quickstart.html#setup



Ранг: 15.7 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 31 октября 2017 12:22
· Личное сообщение · #11

можно ли скомпилировать отдельный класс из проекта?
и чем это можно сделать

Добавлено спустя 14 минут
через командную строку JDK можно скомпилировать только отдельный класс?



Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 31 октября 2017 13:01
· Личное сообщение · #12

vitalik9 пишет: через командную строку JDK можно скомпилировать только отдельный класс?

Можно. https://habrahabr.ru/post/125210/



Ранг: 15.7 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 31 октября 2017 14:51 · Поправил: vitalik9
· Личное сообщение · #13

-=AkaBOSS=- пишет:
ну вот и приплыли
Code:

private void a(JSONArray jSONArray) {
Class class_ = null;
for (Object e2 : jSONArray) {
try {
Class class_2 = Class.forName(e2.toString().split(":")[0]);
if (class_ == null) {
class_ = class_2;
continue;
}
Object obj = class_2.newInstance();
String string = e2.toString().split(":")[1];
Field field = class_.getDeclaredField(string);
field.setAccessible(true);
field.set(class_, obj);
}
catch (ClassNotFoundException var5_6) {
var5_6.printStackTrace();
}
catch (IllegalAccessException var5_7) {
var5_7.printStackTrace();
}
catch (InstantiationException var5_8) {
var5_8.printStackTrace();
}
catch (NoSuchFieldException var5_9) {
var5_9.printStackTrace();
}
}
}


таким образом в принципе можно запихнуть что угодно и куда угодно, в том числе важные для алгоритмов константы и проч.
без валидных данных далеко не уедешь

чем Вы декомпилировали?
перепробовал разные программы все показывают NULL



Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 31 октября 2017 15:53
· Личное сообщение · #14

vitalik9 пишет: чем Вы декомпилировали?

Основные движки java декомпиляторов можно тестировать здесь: javadecompilers.com, сам пользуюсь когда нужно разобрать какую то мелочь.
Но с такими знаниями лучше забить или заплатить кому то.

| Сообщение посчитали полезным: sefkrd


Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 01 ноября 2017 05:46
· Личное сообщение · #15

vitalik9 пишет:
чем Вы декомпилировали?
перепробовал разные программы все показывают NULL

DJ Java Decompiler



Ранг: 15.7 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 03 ноября 2017 09:35
· Личное сообщение · #16

одна просьба если кто сможет помочь
нужно установить значение var1.put("timestamp", String.valueOf(var2));
равное 1509342226771
чтоб оно было фиксированным


d1c4_03.11.2017_EXELAB.rU.tgz - a.class



Ранг: 34.1 (посетитель), 118thx
Активность: 0.040.01
Статус: Участник

Создано: 03 ноября 2017 11:05
· Личное сообщение · #17

e530_03.11.2017_EXELAB.rU.tgz - a1.class

| Сообщение посчитали полезным: vitalik9

Ранг: 15.7 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 14 февраля 2018 10:03
· Личное сообщение · #18

Скажите пожалуйста чем вы изменяли class я декомпилировал и попробовал скоипилировать обратно и выдает ошибки. Из за того что данный файл один из проекта.
Чем можно отредактировать отдельный class?



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 14 февраля 2018 10:54
· Личное сообщение · #19

Зависит что имеено вам редактировать
ежели по взрослому -надо рекомпилировать
ежели молоточком ret true можно утилитами
коих много
например - DirtyJoe и др



Ранг: 15.7 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 14 февраля 2018 12:09 · Поправил: vitalik9
· Личное сообщение · #20

если рекомпилировать то чем?

Добавлено спустя 6 минут
просто в классе много инпутов и при компиляции выдает ошибки
мне необходимо изменить команду if потом скомпилировать.
Чем это можно сделать?



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 14 февраля 2018 12:33
· Личное сообщение · #21

1) получить сорс код ява (через ява-декомпилятор, пробовать пару штук, оценить качетсво или сделать солянку)
2) для рекомпиляции - я люблю нетбинс (но можно в любом ином ПЗ)



Ранг: 15.7 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 20 февраля 2018 09:51
· Личное сообщение · #22

private void e() {
final HashMap<String, String> hashMap = new HashMap<String, String>();
hashMap.put("key", this.b);
hashMap.put("hwid", this.a);
hashMap.put("cs", d.b().orElse("unavailable"));
hashMap.put("timestamp", String.valueOf(System.currentTimeMillis()));
hashMap.put("profile", i.a().d());
final JSONObject jsonObject = new JSONObject(com.skypetalker.client.g.b.a(d() + i.a("server.login.path"), (Map)hashMap));
if (jsonObject.has("access") && jsonObject.get("access").equals("true")) {
final JSONObject jsonObject2 = jsonObject.getJSONObject("properties");
for (final String s : jsonObject2.keySet()) {
com.skypetalker.client.c.a.a().a(s, jsonObject2.getString(s));

ответ приходит в таком формате
j8eRHvghgZSfqsavlbA5R5DZVgJTZJ6/Bg4aeTDr1WkoTKxfQtz04HFg2X3nmWeW+lsSEd4LiQc5Aty9Vo3Q9O9bl3p0k41Gh1hZ0uq1b58GSuTC2VcHCDu/8t8mqqLCQtVNQAJt4EhaIRnt52i3DQufDWJF3GXbuKTtcmxiKv/RUgr9gKNZJyAnm9su+F80QzrpiIb/ubr0RPnA9pzfE3+mgfihnZWcFEAzqNCQRU7/Ro6crw/0tAtqMW20kNWRGSCY+NBS7A7t+rV85ttC2TTn1cIA2djXdbHcjRGMwWSdLcnM/X5cqjHWT6CEzwEM7RsMuDH7VdwEPeJA17FJv0dIi20N26gd9KEU/itBEg1LTX1BhcixEqU6W02MV8NvN+/3UeZXvpbu3tb7/Dbgq4tTy3YRFjfGoJSOZujPWVojt39jksHaK0ABSICiIqJnfcB0Hh6YSXM1YoNSC4hFM+q9PBoo3BZV0/in/NDH3Tv1nWCvJavJ2pUK8RE9o9rPRQvKYzcNLZDQoBIwJS+kKgEQWHYNrdN+CKFyE/ep4F8R4yfA3kBMA0MkcItuU4xcnoyT8TvI3ger09/8vwgbnGRX8Iok/o2eae6/ynsSZbxY3iZhhsl7Og0FcaOUkF9vp2RUuJx7v/d28wOMnqXJElvKzco0Q5GgEtPxAMILAy6Lk2hqVXLURePB75yfzSqZjKxWtH4jN5xC2p9rVyKRZbypdxnORvwKnQcUmYHUnRkSX/7JJCsZOYu0JA/HW7KNrPQQF6fO6M4+FMMuCWHSlej+uEfDglji2JgGNE7H2RTo9zgtJYAU3SwUNCU5ZPjBCRXG+aJ93rJZ64mfY+ijLG0h2fTNLD6CuhM3m38776eQDhhIFwO76IqbLuYz5ia2U57JBk/8x3OGrE3+zc3v7RwqkAAJw3emZk99gdey6ynnpVKGKpbg0dqQQUG+fazu34Dq863PtJFl++c/15K+/STU5ogMorvO6E0G/6sv3oeNhaYvynkhMvsm8CvzvguxTc+bndOmMQBlpKIl/Rd6wgQ292XLBkEkZxjMb5ZtbTKMQH4uUo/+xTJ7BJrCEmIoGk4ea6pbALU/XML4bJbqRO/PGbZo1izO+/5KCe/HeXPKnaC89VdiqT8RI4X4Gg3DaE9857cnC/EPDMKTXHJNUR4cr+kDuJ8iG8x2Biw8uxSm0hzjT6RwG8i5guoSb2jeFWUJkYQ7vnV7SBv5hK3zsRfXcfnBwSIa+ZRwMeE6ys2b2Sk95VVtRwr0xyeBXkteJBoVx+4ml4c=

судя по проверке ответ должен придти "true"
проверял программой HttpAnalyzerStdV7
в каком это формате?
какой программой можно получить ответ в правильном формате?



Ранг: 456.3 (мудрец), 340thx
Активность: 0.280.02
Статус: Участник
Android Reverser

Создано: 20 февраля 2018 10:08
· Личное сообщение · #23

vitalik9 пишет:
в каком это формате?

бляхо, если ты не видишь, что это base64, то что ты там вообще ковыряешь? наугад, что-ли?

-----
SaNX


| Сообщение посчитали полезным: VodoleY

Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 20 февраля 2018 10:14 · Поправил: VodoleY
· Личное сообщение · #24

vitalik9 пишет:
teJBoVx+4ml4c=

Base64
ЗЫ.. .не успел.. опередили)

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....



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


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