识别编程语言

时间:2014-04-16 04:05:41

标签: c++ windows visual-c++ programming-languages decompiler

所以我有一个软件程序,由于超出这篇文章的原因,我不会包括但简单地说,我想" 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.exeViaNetDll.dll二进制文件中获取了C ++伪代码,这使得他们对专有语言及其使用的API有了很多了解。从我可以看出每个执行首先被反编译然后通过解释器运行。他们也绰号他们的语言ATCL,仍然不知道它代表什么。在搜索API时,我发现了一些名称为ExecuteFileExecuteStringCompileFileCompileStringInspectFunction和最后DumpObjCode的调试方法。使用DumpObjCode方法,我能够执行某种脚本文件转储。上述脚本的转储文件:http://pastebin.com/PuCCVMPf

我希望有人可以帮助我找到我所取得进步的模式。我尽我所能去查看伪代码,但我不了解C ++,所以我很难理解代码。我试图将我认为是编译脚本子程序的内容分开,但我不确定:http://pastebin.com/pwfFCDQa 如果有人能够让我知道这段代码片段正在做什么,看起来我是否走在正确的道路上,我会很感激。先谢谢你。

0 个答案:

没有答案