新人求助,如何能将二进制数据直接作为一个应用程序运行
vb.net吧
全部回复
仅看楼主
level 1
一棵野草 楼主
最近写了一个程序,不小心用了VB.NET,VB.NET里虽然也有混淆器,但防修改的能力几乎为0。
所以我自己又写了个加密的小程序,把exe文件的数据加密后保存。使用时再解密回原本的文件。
但这样的话,因为使用时要把它先解密到硬盘上才能运行。所以不管再怎么隐藏都可以通过程序进程找到这个exe文件的位置,可以被别人直接拿来修改。
所以这里我想求助,有没有什么方法,让解密出来的 属于可执行文件的二进制数据 不需要写在硬盘上就可以直接运行。(要是能用到哪部分数据我就只解密哪部分数据就更好了)
2013年03月21日 08点03分 1
level 9
C#的你会吗?现在的反编译都还是不太可能完美实现,编译好的东西哪会那么容易就被修改啊?加密和解密针对的应该得是一个文件吧,或许可以用一种特别方式做成几个部分,然后分别编译成二进制的可执行文件,然后再加密,需要用的时候再解密
2013年03月21日 10点03分 2
用的时候,还是要将exe文件解密到硬盘上才能运行。我想要做的,就是让这个exe文件的原始数据不出现在硬盘中就可以直接运行它。VB.NET做的东西,反编译起来很容易的,而且我这程序里有太多地方,只要任意一处被改一点点,就可以被人利用。
2013年03月21日 14点03分
level 11
将程序分块,做个引导程序,用一部分解密一部分
2013年03月21日 11点03分 3
回复 一棵野草 :这个不行。。。必须出现在硬盘中T^T
2013年03月21日 18点03分
回复 大鸟629 :可以的,网上有C语言版的PE加载器源代码,模仿WINDOWS系统执行exe文件时如何把硬盘上的数据加载到内存的方式,把数据在内存中部署好,就可以了。只是VB里没有指针,部署内存的话也不知道行不行。PE加载器好像也挺多规则的,等有空了再研究,VB不行的话,就用C语言做。
2013年03月22日 03点03分
回复 一棵野草 :好高端!谢谢了!
2013年03月22日 05点03分
level 1
一棵野草 楼主
找到了,原来这东西叫PE加载器,要想在内存中运行程序,得自己写个PE加载器。
Windows的PE加载器在启动程序的时候,会将磁盘上的文件加载到内存,然后做很多操作,如函数导入表重定位,变量预处理之类的。
所以只要自己把这些操作在内存中做完,就可以直接运行内存中的程序了。
2013年03月21日 15点03分 4
level 1
一棵野草 楼主
接下来就是要学习如何用VB操作内存了,或者不行的话就换C。一次性写好加壳工具,以后再编别的程序的时候,就可以直接使用了。
2013年03月21日 15点03分 5
level 13
随便找几个加壳器,混用。
2013年03月22日 10点03分 7
是的,就是要找加壳器的意思
2013年03月22日 17点03分
level 9
C盘找个temp文件夹
2013年03月23日 09点03分 8
文件夹是存放文件的地方,所以只能存文件;存不了二进制数据。而且按他的要求是不能出现在硬盘当中的,最好能直接出现在物理内存里并且直接就可以运行
2013年03月23日 10点03分
回复 OneStep7 :那可不简单
2013年03月23日 11点03分
回复 度翔_ :这“认识”来得太慢了,不就是我告诉你的吗[瞌睡]
2013年03月23日 11点03分
回复 OneStep7 :要是我我才不走弯路,先做好存进硬盘再找解决方案
2013年03月23日 11点03分
level 11
有那么低么?
2013年03月24日 06点03分 9
level 5
都是高人。我么也不会。
2013年03月24日 12点03分 10
level 11
我感觉你加个外壳多好
2013年03月26日 17点03分 11
1