对近在眼前加密软件原理的猜想
当年一直有一个龌龊的想法,就是给别人的软件加上自己的限制,比如密码,比如验证等等。
这种想法一直延续到今天,有事没事我就会上网研究一下相关技术,看看别人写的源码,r然后自己想想。
不过,因为技术有限,一直都没能很完美的实现。看过的源码也都原理一样,跟我一开始的思路都是一个东西。
后来发现近在眼前大神的一款工具,给任何软件加密码。
尝试了一下,发现无比神奇。然而更神奇的是,大神居然把这款软件的源码共享出来。然后我各种的研究啊,发现还是看不懂。
里面最重要的一部分叫做“头文件”,加载在资源中。我将资源释放,发现是一个完整的exe文件。
然而这个文件是怎样写的,大神没有分享。
我的思路就开始跑偏,觉得大神可能是pe头什么的汇编操作。查了各种资料也没查出个所以然来。
最近研究写一款压缩壳,想到了一个思路,忽然对大神当年写的“文件头”有所猜想。原来主要东西就是一个解密运行的原理。所有的核心都在这个“文件头”里。
猜想原理,假设要加壳的原文件为a,加壳后的为b,首先写一个头文件,这个头文件是一个完整的exe文件,他主要功能是验证密码,完整的计算a的大小,并运行a。
然后将a对接到头文件后面,生成一个b。
当软件运行的时候,头文件会效验密码正确性,然后自动剥离a,并运行a。这样就实现了对a的完美限制。
话说回来,这样就有点太简单了,所以在对接前,通常要经过一定的处理,比如压缩,比如加密,反正就是一些字节集操作。
而剥离的方法,通常是写出,但如果a未加壳,那么可以申请内存,直接内存运行即可,无需写出。
不知道大神是不是这样写的,一切都是我的猜想。