如何修改自已EXE文件中的内容?

jxhywdh 2001-09-23 11:58:48
我想在EXE文件中设置计数器 每次启动后就在EXE文件的某处 +1
在C++BUILDER 不知道要如何做?
...全文
4399 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
___NULL 2001-09-23
  • 打赏
  • 举报
回复
可以利用其他程序来调用,调用之前先修改程序,修改完了再执行那个程序,这样做应该没问题
jxhywdh 2001-09-23
  • 打赏
  • 举报
回复
用注册表 或.ini文件别人太容易破解了!!!
我是想 如果没有注册本软件 就要限制使用
次数
Zheast 2001-09-23
  • 打赏
  • 举报
回复
这样不知行不行?

建一个主程序,把要修改的EXE作为主程序的调用,关闭EXE后修改

为什么不用注册表?
Wingsun 2001-09-23
  • 打赏
  • 举报
回复
不行,当你的程序执行起来后你是不能修改你的程序的,因为这是系统不允许的。
通一 2001-09-23
  • 打赏
  • 举报
回复
怎麼寫。關注。
wangxd 2001-09-23
  • 打赏
  • 举报
回复
没必要,你随便在windows目录下建一个文件如:netuse.dll,其实是一个自定义的数据文件,然后把你需要的信息写进去不就行了
jxhywdh 2001-09-23
  • 打赏
  • 举报
回复
请问 781014(城北的风) 兄:
如何 在程序运行时 修改或删除 这个文件。 ?

781014 2001-09-23
  • 打赏
  • 举报
回复
错了在程序运行时是可以修改的。同时也可以删除这个文件。
bcboy 2001-09-23
  • 打赏
  • 举报
回复
可修改EXE文件时间的秒部分,没人会注意,而且也不难。
Hawk_sun 2001-09-23
  • 打赏
  • 举报
回复
据我推测:您所要实现的无非是一个类似于限次数使用的exe,这有很多方法实现,从你的发言可以知道,您不想采用ini或注册表的原因只是出于怕被破解!但是您可以考虑使用加密技术,当然,这在软件开发行业中是最受人唾弃的(至少我这么认为,如果从纯技术保密安全讲,是可取的,但是,若出自商业利益考虑,是民族软件产业的一大障碍!)。
1。采用加密的数据写入注册表或ini中,您所要做的只是写一段加密函数,这里你要绕开别人跟踪可以采取很多办法。具体你可以借鉴“变速齿轮“中对时钟改变的技术!并不是直来直往的哦。
2。采用一个dll,这个dll总共设计一个静态变量,一个读静态变量的函数,一个写静态变量的函数,你只需在程序中判断这个DLL中静态变量所对应的地址,然后在EXE中修改这个地址的值,这是完全可以做到,修改完成后再装载这个DLL(用LoadLibrary(...)),就可以了!具体细节,你可以参看photoshop的中文伴侣,(版本号我忘了,不过我对他采用的这个技术很佩服)。
3。也许上面“平行空间“这位先生(女士)说得对,采用一个接口程序,但在技术上我不知道
他是否跟我想的一样。
我的思路:考虑到修改exe最好在静态方式下,假设待修改程序为A.exe,我们先写一个B.exe,先得出啊A.exe中待修改的变量的地址,当然是相对于程序头的相对地址!这个变量在A.exe中你可以考虑用汇编潜套定义,最好尝试着做定位(org指令),我没有试过,但可以试试看。在b.exe中尝试着先查找A.exe的静态存储位置,从该处下手,偏移一定的距离来修改该变量。修改完后,再发起a.exe的新进程,注意发起后要先杀掉啊a的主线程,这样才能完全释放可能存在的资源遗留问题(有关在进程中发起新进程,具体参看:《windows内核编程》微软技术图书出版社)

忠告:对于反常规问题, 不要期望一次成功!多尝试几次,相信“天道酬勤“




kimryo 2001-09-23
  • 打赏
  • 举报
回复
要改还是可以,不过你最好到ring0,还要取得打开的file的句柄。有点像一个病毒。
maquanjun 2001-09-23
  • 打赏
  • 举报
回复
up
前段时间烈火下载给大家提供了一款Flash文件EXE的Delphi源代码,我们知道SWF转EXE是很常见的,那么反相转换(EXE转Flash)你有没有见过呢?今天就带给大家这样的源程序。SWF就Flash的一种生成格式,依靠自已公司的FlashPlyaer插件运行,如果要想脱离插件,需导出成EXE文件格式,用Flash软件可以,如果没有可以自己写程序将SWF转换成EXE,将EXE转换成SWF是个逆过程,具体请看代码。   // 将Edit1的路径赋给exeFileName变量   exeFileName := Edit1.Text;   // 修改EXE路径的扩展名,以获取SWF文件的存储路径。   swfFileName := ChangeFileExt(exeFileName, ‘.swf‘);   // 检查指定的EXE文件是否存在,如果不存在则退出过程,不做任何处理。   if not FileExists(exeFileName) then   begin     ShowMessage(‘文件未找到.);     Exit;   end;   // 分别创建swfFile及exeFile对象   // 创建空的swf文件并赋于写入的权限(fmOpenWrite)   swfFile:=TFileStream.Create(swfFileName, fmCreate or fmOpenWrite);   // 打开EXE文件,并赋于读取的权限(fmOpenRead)   exeFile:=TFileStream.Create(exeFileName, fmOpenRead);   // 从EXE文件开头搜索   // 将文件指针移到存储SWF文件大小的地方   // exeFile.Size用于获取整个EXE文件的大小,减去4个字节正好是SWF文件大小储存的地方   exeFile.Seek(exeFile.Size - 4, soFromBeginning);   // 读出SWF文件的大小   exeFile.Read(nFileSize, 4);   // 将文件指针移动到SWF文件开始处   exeFile.Seek(exeFile.Size - (nFileSize   8), soFromBeginning);   // 将SWF文件所有内容复制到swfFile对象去   // 此时SWf文件内容已保存在硬盘了   swfFile.CopyFrom(exeFile, nFileSize);   // 释放资源   swfFile.Free;   exeFile.Free;   ShowMessage(‘SWF文件已成功还原.); end;

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧