混合* .exe-时间戳是否也会修改?


1

我正在尝试将*.exe文件从16 进制更改ArialTahoma。我已经做到了,问题是程序注意到某些更改。

我是hexing的新手,所以我不确定是否每次您将exe十六进制化时,某些日期也会发生变化(可能是程序注意到了这一点)。任何人都可以确认这一点,如果可能的话可以提出解决方案?


如果是简单的时间修改问题,则可以使用时间戳编辑器(例如touch)。那里有许多Windows等效项。
2014年

Answers:


1

通常,可执行文件的日期时间戳是没有意义的,因为时间戳不是原始的编译时间,而是安装时间。可执行文件无法依靠外部时间戳来验证其是否完整。

一些可执行文件经过了数字签名。这意味着使用发布者的密钥对文件应用加密功能,并将其附加到可执行文件上。该签名可以通过操作系统(例如Windows)或可执行文件本身进行验证。

由于可执行文件的签名与计算值不匹配,因此将注意到可执行文件的二进制结构的任何更改。如果没有原始密钥,通常是无法生成正确签名的,这是一项防止篡改(例如,破解软件或感染病毒)的安全功能。

除此之外,还可以有CRC(例如CRC-32),它们也可以简单地检测到可执行文件的更改。在这种情况下,可执行文件可能会在内部验证检查,您可以通过在可执行代码中进行跟踪,直到找到检查例程,然后无操作(0x90)退出对检查函数的调用,才能绕过该检查。


如果程序员编写了自己的安装例程,则可以将日期和时间戳设置为程序员想要的任何日期和时间。如果确实如此,则可以从批处理文件中执行此操作。
LDC3

1
@ LDC3是的,我已经看到安装日期早于计算机的购买日期,但是我怀疑很少有开发人员执行此操作,因为诱使系统应用时间戳来诱使程序认为它没有它,太容易了。被修改。作为大约30年的开发者,我知道我不相信有能力的用户可以轻松修改的内容。
phyrfox

1

似乎该exe具有自我保护逻辑,这在当今很正常。但是,实现此保护的方法并不相同。一些使用数字签名,一些使用CRC检查,一些使用第三方模块保护工具等等。但是我相信第三者不是您的情况,因为通常这些工具生成的模块经过压缩和/或加密,因此您无法直接找到信息。

但是,尽管可以使用该时间戳记信息来检测修改,但是很少将时间戳记仅用于保护,因为任何人都可以使用此类工具对其进行更改。如果您拥有原始属性,则可以还原属性,因为它不会造成损害,但可能无法正常工作。

那么,下一步是什么?为了克服这个问题,我们需要知道对修改检测进行了哪种检查,这比混合模块要复杂得多。在此之后,我们可能会采用一些高级方法,例如进程内内存修改,破解检测例程或挂钩Windows API调用以实现字体替换的目标,但只有通过混合才能实现这些方法。您至少需要学习如何使用调试器。也许有人已经出于不同目的(例如,NO-CD补丁)破解了该文件,然后您可以抓取它进行混合,并且由于逻辑已被停用,因此它可能会起作用。但是,请在执行任何操作之前始终考虑合法性。

但是,您试图仅更改使用的字体。这对我来说似乎合法-您为什么不要求应用程序供应商选择更改字体?


是的,我已经问过了,它是一个游戏的专用服务器,因此合法性不是问题。我确实知道如何使用调试器,我也在想走那么远。您能否建议一个链接或类似链接,以便我对找到支票有一些指导?而且,它并不是真正的自检程序。这是一个* .exe(十六进制的一个),由另一个* .exe(执行检查的一个)打开
Christopher Francisco

Christopher //如果您能够使用诸如OllyDbg和WinDBG之类的调试器,请尝试检测何时打开了目标EXE。“ CreateFile” API是一个很好的起点。然后,仔细跟踪,直到出现“ modified exe”错误。通过这样做,您可能会知道什么逻辑用于检测并通过混合“调用方”来更改该流。但是,呼叫者也可以是“自我保护”的。如果是这样,问题就可以回到原来的问题。
Scott Rhee 2014年

顺便说一句,如果直接运行被调用人EXE会发生什么?我知道它不起作用,或者您不会提出这个问题:)但我想知道为什么它不起作用。如果您知道原因,也许我可以通过欺骗被叫者或呼叫者来给您更多选择。
Scott Rhee 2014年

今天下午我将与OllyDbg和WinDbg一起尝试。当我直接打开EXE(在混合之前和之后)时,什么都没发生:所以我检查了Windows任务管理器,并且EXE出现并立即消失了
Christopher Francisco

您是否尝试过像原始调用方正在调用被调用方一样的完全相同的命令行参数?要获取参数,可以使用Process Explorer。只需以通常的方式启动应用程序,在Process Explorer中找到目标并检查属性。此链接可能会对您有所帮助。bleepingcomputer.com/tutorials/determine-command-line-arguments
Scott Rhee
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.