所以我有一个软件程序,由于这个职位以外的原因,我不会包括,但简单地说,我想“MOD”原来的软件。 该程序是从一个名为ViaNet.exe
的Windows应用程序和附带的DLL文件(如ViaNetDll.dll
。 应用程序被赋予一个参数,如./Statup.cat
。 还有一个WatchDog进程使用参数./App.cat
而不是前者。
我能find埋在我的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
文件是二进制forms。
在程序文件夹中search扩展名为.atc
任何文件.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上search.atc
结果在AutoCAD中。 但看看结果,显示它是某种调色板文件,没有任何源代码相关。
在我看来,如果我能用这种未知的语言进行编程,更不用说反编译现有的东西,我可能会因为修改软件而感到幸运。 预先感谢任何帮助,我真的很希望有人对我有一个答案。
编辑
如此巨大的新闻人物,我发现了一个有趣的发现。 我从供应商处下载了一个补丁,它包含一个执行ViaNet.exe Execute [Patch Script].atc
的batch file。 我很快就发现可以使用Execute
来同时运行.atc
和.cat
文件,就像没有参数一样。 一旦知道这一点,我认为必须有各种各样的论据,你可以尝试一下,好运气之后,有一个。 那就是Compile [Script].atc
。 这个参数也将编译任何.atc
文件到.cat
。 我编译了上面的脚本进行比较: http : //pastebin.com/rg2YM8Q9
所以我想现在的目标是确定是否可以反编译这个脚本。 所以我又进了一步,成功地从ViaNet.exe
和ViaNetDll.dll
二进制文件中获取C ++伪代码,这已经对专有语言和它使用的API有了大量的了解。 从我可以告诉每个执行被反编译先运行通过解释器。 他们也绰号他们的语言ATCL,仍然不知道它代表什么。 在searchAPI时,我发现了几个名称类似ExecuteFile
, ExecuteString
, CompileFile
, CompileString
, InspectFunction
和DumpObjCode
debugging方法。 使用DumpObjCode
方法,我可以执行脚本文件的某种转储。 上述脚本的转储文件: http : //pastebin.com/PuCCVMPf
我希望有人能帮我find一个我所取得进步的模式。 我正在尽我所能去伪代码,但我不知道C ++,所以我很难理解代码。 我试图分开我可以确定为编译脚本子程序,但我不确定: http : //pastebin.com/pwfFCDQa如果有人可以给我一个这个代码片段正在做什么的想法,如果它看起来就像我走在正确的道路上,我会很感激。 先进的谢谢你。