2013-02-28 2 views
2

У меня есть TCP-клиент на базе Java, который разговаривает с нашим производственным сервером, который я переписываю. Клиент имеет IP-адрес сервера &. То, что я хочу сделать, - это изменить только IP-адрес в клиенте до 127.0.0.1 & Я могу использовать тот же номер порта в своем dev-блоке. Вот трюк, у меня нет всего исходного кода, поэтому я не могу просто перекомпилировать его. Парень, который написал его, не работал здесь около четырех лет, и пока у меня есть жесткий диск, я не смог найти скомпилированный клиент обратной линии (хотя я нашел для него частичный исходный код) или даже все исходный код для производственного клиента. Я подозреваю, что он написал свой код на сетевом диске, и он потерялся через прошедшие годы.Измените файл .jar без источника?

Есть ли способ для декомпиляции клиента и перекомпиляции с этим изменением? Hex или binary edit (у меня нет навыков ни в одном, я только что видел) Может быть, WinRAR, так как я понимаю, что файлы .jar - это только файлы с zip-файлами? Или, можно ли каким-то образом уловить исходящий трафик TCP от клиента & переадресовать его в мой dev-блок? Я не могу снять производственный сервер для тестирования, и без измененного клиента будет сложно гарантировать, что я буду эмулировать ответы производственного сервера на клиента.

Я нашел эту статью: Decompile & recompile single file from jar, однако я не понимаю разницы между разборкой & декомпиляции, но я нашел полезность JD, упомянутую там.

ответ

4

Декомпилятор java, который вы нашли (http://java.decompiler.free.fr/), возьмет скомпилированный файл jar, который у вас есть, и создайте исходные файлы Java. Затем вам нужно будет отредактировать исходные файлы, чтобы внести нужные изменения и перекомпилировать.

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

+0

Спасибо за ссылку, я просто искал Java Decompiler, который работал с JDK 1.7 :) +1 – WilliamShatner

+0

@hwatkins, это сработало довольно хорошо, я смог разбить клиента с помощью JAD, внести изменения и попросить их перекомпилировать. Есть много зависимостей, над которыми я работаю, но, по крайней мере, он будет компилироваться с ошибками, и это намного больше, чем когда-либо раньше. У меня есть куча несоответствий типа данных в разных файлах проекта, и я не уверен, почему это так, возможно, это всего лишь кривая обучения, которую я должен поднимать. Хорошая новость заключается в том, что у меня есть большая часть источника, и это вроде компиляции, надеюсь, теперь он просто выясняет ошибки. Благодаря! – delliottg

+0

@hwatkins, как оказалось, у первоначального клиента была возможность взять ключи командной строки для IP-адреса. Никто не знал этого, пока я не декомпилировал его с помощью этих инструкций. Таким образом, он не будет работать с loopback-адресом (127.0.0.1), но он будет с IP-адресом моего ящика, поэтому все, что мне нужно было сделать, это изменить порт на сервере (уже разработанный для настройки параметров конфигурации). WilliamShatner, рад узнать, что я смог помочь капитану Кирку. – delliottg

2

Скопируйте банку в систему на свою рабочую станцию ​​и разархивируйте ее. Затем используйте инструмент, например jad, для декомпиляции класса, который вы ищете, и внесите изменения. вы должны скомпилировать его, так как банки, которые вам нужны для компиляции, - это те же банки, которые вам нужны для запуска вашего клиента.

Смежные вопросы