Сейчас на форуме: asfa, Rio (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Разбор Java-проги для мобилы
Посл.ответ Сообщение

Ранг: 61.7 (постоянный), 12thx
Активность: 0.090.02
Статус: Участник

Создано: 17 августа 2013 07:05
· Личное сообщение · #1

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

Открыл архиватором 7z. Нашел в файле ab.class URL серверов, удалил. Но это решение костыльное, прога все равно жалуется что не удалось проверить подключение и вверху экрана горит красная мессага "оффлайн".

Нашел процедуры, если не ошибаюсь, они в bp.class. Но дальше что делать, не знаю, ни отладчика, ни знаний по java нет. Удаление процедуры вело к зависанию проги при загрузке. Ковырял декомпилятором, редактировал JavaBite

Подскажите, как мне ее вырубить, может быть, ничего удалять и не надо, сменить только условие где-нибудь...

eb58_17.08.2013_EXELAB.rU.tgz - yandexmaps-midp2full-18x18.jar



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

Создано: 17 августа 2013 16:20
· Личное сообщение · #2

Gerpes
В классе et:
public final void run() {
CI_007a var1 = CI_007a.MP3a();
switch(this.fpa) {
case 1:
var1.mPe();
break;
case 2:
cz.MP1a().mPl();
break;
case 3:
cz.MP1a().mPm();
break;
case 4:
if("Оффлайн" == dm.FP2a.mPa("Оффлайн режим", "Не удалось установить соединение с сетью. Повторить попытку подключения еще раз или перейти в оффлайн-режим?", "Повторить", "Оффлайн")) {
YandexMapsMidlet.MP2b();
}
break;
case 5:


Отсюда поди плясать надо?

-----
SaNX


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

Ранг: 61.7 (постоянный), 12thx
Активность: 0.090.02
Статус: Участник

Создано: 17 августа 2013 19:38
· Личное сообщение · #3

Не знаю уже, я уже торможу. Много мелких файлов и кодировка которую не понимает ни декомпиль ни блокнот, меня с толку сбивает, Штирлицем каждый файл открывать то еще удовольствие. Чем вы открыли что у вас Юникод корректно отображается? А то я подозреваю что часть кириллицы проморгал.



Пропатчил какой-то байт, сменил aload_0 на aload_1 прога уже ни на что не жалуется и никуда не лезет, но мессага "проверка версии" горит постоянно. Сейчас копаю cz.class- там нашел в константах эту строку, но не могу понять где она вызывается. Java-Bite говорит что она в методе "а", а там всего две строчки и никакой строки нет...



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

Создано: 17 августа 2013 21:09
· Личное сообщение · #4

aload_0 - это загрузка 0 локальной переменной в стек. Обычно это this. Таки интересно, что такое лежало в 1, что оно даже работает

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

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

Создано: 17 августа 2013 22:31
· Личное сообщение · #5

Gerpes пишет:
Пропатчил какой-то байт


Gerpes пишет:
сменил aload_0 на aload_1


с вами весело!

сделайте деобфускацию чтоль для начала...




Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 17 августа 2013 22:35
· Личное сообщение · #6

Gerpes пишет:
Решил сделать оффлайн-версию Яндекс-карт, чтобы в инет не ползала вообще и не жрала мобильный трафик.

У нас в Украине некоторые операторы не тарифицируют трафик от яндекса с их приложений, пользуюсь Яндекс.Картами без тарификации.

-----
Лучше быть одиноким, но свободным © $me




Ранг: 61.7 (постоянный), 12thx
Активность: 0.090.02
Статус: Участник

Создано: 17 августа 2013 22:56 · Поправил: Gerpes
· Личное сообщение · #7

Сам не знаю Просто подумал что патчить-то особо нечего и пошла, сразу, не поленился на балконе проверить GPS. Правда глюк есть, при попытке нахождения на карте себя, ничего не происходит. А раньше сразу лез зачем-то в инет... Но это после.

Не могу найти в патчере где , вырубить осталось последнее, все эти строки можно удалять и ничего быть не должно( по аналогии с предыдущим патчем , там тоже лишнего кода было много.. )

public final void a(byte byte0, String s)
{
if(b_byte_fld >= byte0)
return;
if(c_fh_fld != null)
d(c_fh_fld);
b_byte_fld = byte0;
bd bd1 = new bd();
switch(byte0)
{
case 4: // '\004'
bd1.p = 0xff0000;
bd1.o = 0xffffff;
if(s.length() == 0)
s = "Оффлайн";
break;

case 2: // '\002'
bd1.p = bd.c;
if(s.length() == 0)
s = "Проверка версии";
break;

case 1: // '\001'
case 3: // '\003'
bd1.p = bd.b;
if(s.length() == 0)
s = "Загрузка";
break;

default:
return;

sendersu Эт да, сам веселюсь, потому что не понимаю в этом ни черта.
sendersu пишет:
сделайте деобфускацию чтоль для начала...

не умею, первый раз .jar трясу

BoRoV Так то в Украине, видимо у вас не жадные.
И потом немного сэкономить батарею хочу, помимо трафика.



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

Создано: 17 августа 2013 23:30 · Поправил: SaNX
· Личное сообщение · #8

Gerpes
качни dex2jar, там в наборе есть батники.
алго таков:
d2j-init-deobf.bat yandexmaps-midp2full-18x18.jar
d2j-jar-remap.bat yandexmaps-midp2full-18x18.jar -c yandexmaps-midp2full-18x18-deobf-init.txt
java -jar fernflower.jar yandexmaps-midp2full-18x18-remap.jar src

получишь сорцы.

ссылки на обе тулзы есть в теме про взлом на андроид.

-----
SaNX


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

Ранг: 61.7 (постоянный), 12thx
Активность: 0.090.02
Статус: Участник

Создано: 18 августа 2013 00:44 · Поправил: Gerpes
· Личное сообщение · #9

SaNX Спасибо, разобрал. Получил папку с названием src, в ней те же файлы, только с расширением .java, и добавились кучка CI_xxx.java. Стало гораздо удобнее смотреть, но вот например. Нужный мне сz.java расковырял, удалил кой-че в нем, а собирать его в class чем? тем более в нем вначале написано

public final class cz extends fh implements cq, CI_018u // CI_018u.java-это такой файл появился и в нем немного но что-то есть.
Или черт с ним с файлом, и так .class соберет?
Чуть не забыл. Чем компилировать? Ну просто может кроме полной среды разработки есть что-нибудь поменьше, навроде декомпилятора.



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

Создано: 18 августа 2013 09:44
· Личное сообщение · #10

Gerpes пишет:
Чем компилировать?

ахз. попробуй в эклипсе. но далеко не факт, что соберется. точнее, процентов 99, что не соберется без правки

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

-----
SaNX




Ранг: 61.7 (постоянный), 12thx
Активность: 0.090.02
Статус: Участник

Создано: 18 августа 2013 12:53
· Личное сообщение · #11

SaNX пишет:
найти нужные места в сорцах и потом патчить уже байткод


Вот в этом и проблема. Нужные места найдены декомпилятором, в разделе "скачать" взял. В байткоде непонятно ни черта.



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

Создано: 18 августа 2013 13:45
· Личное сообщение · #12

Дык если речь про дежавю - вроде он показывает байты для каждой инструкции (в настройках включаеццо).

-----
SaNX




Ранг: 61.7 (постоянный), 12thx
Активность: 0.090.02
Статус: Участник

Создано: 18 августа 2013 23:24
· Личное сообщение · #13

Показывает, но JavaBite показывает другой байткод этого же класса. мне уже надоедать начинает



Ранг: 61.7 (постоянный), 12thx
Активность: 0.090.02
Статус: Участник

Создано: 20 августа 2013 15:43
· Личное сообщение · #14

В общем, ну ее, эту джаву. Не понравилась она мне, учить новое лень.
Оставил как есть, в принципе задача пусть кривовато, но решена.


 eXeL@B —› Вопросы новичков —› Разбор Java-проги для мобилы
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати