hur.cn - 华软网

 热门搜索

让可执行文件可以保存信息在自身中!!!

  作者:未知    来源:网络    更新时间:2011/1/9
日常平凡写程序时常会用到一些配置项,
比如设置字体/设置颜色/默许路径/平安密码等等,

一般的做法都是用配置资料(如 .ini)或注册表,
感觉这样做很有弊端,比如说,换台电脑又要重新配置/或连同配置资料拷贝,

时常造成一些不便。

所以,想讨教大家:
有没有措施能够把配置的相关信息都放在自身的exe资料中,这样,只需要拷贝一个资料即可,

有了解这方面信息的请指导一二,先谢过了!
---华软 网友回答---
感觉有点难,EXE在执行的进程中是不能被修改的。
---华软网友回复---
自我理解是,一般软件都将配置信息保存留外部资料中,执行时读取配置信息。

当然能够为用户提供选项,如:勾选响应选项,执行不同操作等,但下一次执行exe,还将是默许操作。

exe属于PE资料,能捆绑资料,很多病毒都这样做的,但知足上述要求,还期待高手解答。
---华软网友回复---
能够,然则对照麻烦,而且涉及到很多类似病毒的操作,会被杀毒软件报毒。
---华软网友回复---
引用 3 楼 lisunlin0 的回复:
能够,然则对照麻烦,而且涉及到很多类似病毒的操作,会被杀毒软件报毒。


在不思量杀毒软件的情况下,

能够详细点说说大概怎样做吗?

或给点相关资料也行,
---华软网友回复---
能够在程序的最后增加一个数据附加段,来填写你的配置,不过这样的话,你需要动态去猎取廉价读取数据
---华软网友回复---
感觉要沉了…………
---华软网友回复---
帮顶……

原先看过一篇文章,讲可黑客程序的,在exe资料尾部写入信息。

第一种方法,用UltraEdit软件,把exe程序尾部增加一部份空间。

C++">CFile openoriginalfile;  
openoriginalfile.Open(originalfile, CFile::modeReadWrite);  
openoriginalfile.Seek( -sizeof(NAMES), CFile::end );             //这个NAMES就是我要保存的配置的一个struct,下面的n是详细的NAMES的对象  
openoriginalfile.Write( &n, sizeof(NAMES) );  
openoriginalfile.Close();  


整个进程不需要获得原资料的长度,而且也能保证写到最后。响应的,读取的代码以下:

C++">CFile myfile;  
myfile.Open(myfilename, CFile::modeRead);  
myfile.Seek( -sizeof(NAMES), CFile::end );  
myfile.Read( &n, sizeof(NAMES) );  


貌似灰鸽子的配置信息就是写入资源里的。

其实另有一种简单的方法就是,编程时先留好空间。然后直接找到对应的字节,替换之。原理行得通,没弄过这块儿,希望对你有帮助,同时期待高手……


---华软网友回复---
  class="deleted_message"> 该回复于2011-01-10 15:28:01被版主删除
---华软网友回复---
  class="deleted_message"> 该回复于2011-01-11 08:46:13被版主删除
---华软网友回复---
open file用正规的麻烦的API也是能够写的,叫Volume Shadow Copy Service.lz找下Microsoft VSSSDK.
---华软网友回复---
主程序a.exe将要写的信息写入同目录ini
配置信息写完后,通过资源生成预先配置程序b.exe

当主程序a响应WM_CLOSE时候,ShellExecute打开b并向b.exe发生自定义消息。
b接到自定义消息后,找不到A窗口句柄时,读取ini并在a中预留位写入配置信息

当关闭b时,删除ini,并通过生成bat方式实现自删除
---华软网友回复---
5 楼的方法应该能够,楼主试试,
---华软网友回复---
11楼的做法是主流做法,看看WinRAR , 将数据资料和执行资料放入统一个可执行资料,点击运行后,在当前程序目录下建一个run的目录,解压到所有资料到run目录,并锁定资料(防止他人误删),并执行可执行资料, 在可执行资料执行完后,将run下的资料重新打包,替换之前的资料.
---华软网友回复---
【原创】Exe程序尾部附加数据增加程序(含VC源码)
---华软网友回复---
  关注
---华软网友回复---
引用 11 楼 gudufuyun 的回复:
主程序a.exe将要写的信息写入同目录ini
配置信息写完后,通过资源生成预先配置程序b.exe

当主程序a响应WM_CLOSE时候,ShellExecute打开b并向b.exe发生自定义消息。
b接到自定义消息后,找不到A窗口句柄时,读取ini并在a中预留位写入配置信息

当关闭b时,删除ini,并通过生成bat方式实现自删除

尝试      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。