所以我有一个软件程序,由于超出这篇文章的原因,我不会包括但简单地说,我想" MOD"原始软件。该程序从名为ViaNet.exe
的Windows应用程序启动,并附带ViaNetDll.dll
等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
文件,并将它们作为字节码/本机运行。在Google上搜索.atc
会导致AutoCAD。但是看结果,显示它是某种调色板文件,没有任何源代码相关。
在我看来,如果我能用这种未知语言编程,更不用说,反编译现有的东西,我可能会很幸运地修改软件。在此先感谢您的帮助,我真的希望有人能帮我解决。
修改
如此巨大的新闻人物,我发现了一个非常有趣的发现。我从供应商处下载了一个补丁,它包含一个正在执行ViaNet.exe Execute [Patch Script].atc
的批处理文件。我很快发现您可以使用Execute
同等地运行.atc
和.cat
个文件,与没有参数相同。一旦知道了这一点,我就认为你必须有各种各样的争论,幸运的是,经过随机的运气,有一个。那是Compile [Script].atc
。此参数还会将任何.atc
文件编译为.cat
。我已编译上述脚本进行比较:http://pastebin.com/rg2YM8Q9
所以我想现在的目标是确定是否可以反编译所述脚本。所以我更进了一步,成功地从ViaNet.exe
和ViaNetDll.dll
二进制文件中获取了C ++伪代码,这使得他们对专有语言及其使用的API有了很多了解。从我可以看出每个执行首先被反编译然后通过解释器运行。他们也绰号他们的语言ATCL,仍然不知道它代表什么。在搜索API时,我发现了一些名称为ExecuteFile
,ExecuteString
,CompileFile
,CompileString
,InspectFunction
和最后DumpObjCode
的调试方法。使用DumpObjCode
方法,我能够执行某种脚本文件转储。上述脚本的转储文件:http://pastebin.com/PuCCVMPf
我希望有人可以帮助我找到我所取得进步的模式。我尽我所能去查看伪代码,但我不了解C ++,所以我很难理解代码。我试图将我认为是编译脚本子程序的内容分开,但我不确定:http://pastebin.com/pwfFCDQa 如果有人能够让我知道这段代码片段正在做什么,看起来我是否走在正确的道路上,我会很感激。先谢谢你。