Поэтому у меня есть программное обеспечение, которое по причинам, которые выходят за рамки этого поста, я не буду включать, но, проще говоря, я бы хотел «MOD» оригинальное программное обеспечение. Программа запускается из приложения Windows с именем ViaNet.exe
с сопровождающими файлами DLL, такими как ViaNetDll.dll
, Приложение получает аргумент, такой как ./Statup.cat
, Существует также процесс WatchDog, который использует аргумент ./App.cat
вместо прежнего.
Мне удалось найти файл журнала, похороненный в папке Windows / Temp для приложения ViaNet.exe. Глядя на журнал, он определяет такие файлы, как:
./Utility/base32.atc:_Encode32 line 67
./Utilities.atc:MemFun_:Invoke line 347
./Utilities.atc:_ForEachProperty line 380
./Cluster/ClusterManager.atc:ClusterManager:GetClusterUpdates line 1286
./Cluster/ClusterManager.atc:ClusterManager:StopSync line 505
./Cluster/ClusterManager.atc:ConfigSynchronizer:Update line 1824
Переход к этим расположениям файлов показывает файлы по этим именам, но не заканчивается .atc
но вместо этого .cat
, В журнале также указывается какой-то класс, метод и номер строки, но .cat
файлы в двоичном виде.
Поиск в папке программы любых файлов с расширением .atc
показывает три — То, что я могу предположить, некомпилированы .cat
файлы — файлы. Низкий и вот, однажды открыв, это, очевидно, какой-то исходный код — с заголовками авторских прав, смеется.
global ConfigFolder, WriteConfigFile, App, ReadConfigFile, CreateAssocArray;
local mgrs = null;
local email = CreateAssocArray( null);
local publicConfig = ReadConfigFile( App.configPath + "\\publicConfig.dat" );
if ( publicConfig != null )
{
mgrs = publicConfig.cluster.shared.clusterGroup[1].managers[1];
local emailInfo = publicConfig.cluster.shared.emailServer;
if (emailInfo != null)
{
if (emailInfo.serverName != "")
{
email.serverName = emailInfo.serverName;
}
if (emailInfo.serverEmailAddress != "")
{
email.serverEmailAddress = emailInfo.serverEmailAddress;
}
if (emailInfo.adminEmailAddress != null)
{
email.adminEmailAddress = emailInfo.adminEmailAddress;
}
}
}
if (mgrs != null)
{
WriteConfigFile( ConfigFolder + "ZoneInfo.dat", mgrs);
}
WriteConfigFile( ConfigFolder + "EmailInfo.dat", email);
Чтобы закончить это как можно проще, я пытаюсь выяснить две вещи. # 1 Какой это язык программирования? и № 2 Может .cat
быть декомпилированным обратно в .atc.
файлы? — и наоборот. Глядя на журнал, кажется, что приложение декодирует / декомпилирует .cat
файлы уже, чтобы интерпретировать их стихи, выполняющие их как байт-код / нативно. В поисках .atc
в Google результаты в AutoCAD. Но, глядя на результаты, видно, что это какие-то файлы палитры, ничего не связанные с исходным кодом.
Мне кажется, что если я смогу программировать на этом неизвестном языке, не говоря уже о декомпиляции существующего, мне может повезти с модификацией программного обеспечения. Заранее благодарен за любую помощь, и я действительно очень надеюсь, что у кого-то есть ответ для меня.
РЕДАКТИРОВАТЬ
Люди с огромными новостями, я сделал довольно интересное открытие. Я скачал патч от производителя, он содержал командный файл, который выполнял ViaNet.exe Execute [Patch Script].atc
, Я быстро обнаружил, что вы можете использовать Execute
запустить оба .atc
а также .cat
файлы одинаково, так же, как без аргумента. Узнав об этом, я предположил, что должны быть разные аргументы, и после случайного везения есть один. Это существо Compile [Script].atc
, Этот аргумент скомпилирует также любой .atc
подать в .cat
, Я скомпилировал приведенный выше скрипт для сравнения: http://pastebin.com/rg2YM8Q9
Поэтому я думаю, что цель сейчас — определить, можно ли декомпилировать указанный скрипт. Поэтому я сделал еще один шаг и добился успеха в получении псевдокода C ++ из ViaNet.exe
а также ViaNetDll.dll
двоичные файлы, это пролило тонны понимания проприетарного языка и его API, который они используют. Из того, что я могу сказать, каждое выполнение сначала декомпилируется, а затем запускается через интерпретатор. Они также назвали свой язык ATCL, все еще не зная, что он обозначает. При поиске API я нашел несколько методов отладки с такими именами, как ExecuteFile
, ExecuteString
, CompileFile
, CompileString
, InspectFunction
и наконец DumpObjCode
, С DumpObjCode
Метод Я могу выполнить какой-то дамп файлов сценариев. Файл дампа для вышеуказанного скрипта: http://pastebin.com/PuCCVMPf
Я надеюсь, что кто-то может помочь мне найти образец прогресса, которого я добился. Я стараюсь изо всех сил пройтись по псевдокоду, но я не знаю C ++, поэтому мне очень трудно разобраться в коде. Я попытался отделить то, что я могу определить как подпрограммы сценария компиляции, но я не уверен: http://pastebin.com/pwfFCDQa
Если кто-то может дать мне представление о том, что делает этот фрагмент кода, и если мне кажется, что я на правильном пути, я был бы признателен. Заранее благодарю.
Задача ещё не решена.
Других решений пока нет …