好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

批量修改文件名修改文件操作.pdf

3页
  • 卖家[上传人]:第***
  • 文档编号:38764292
  • 上传时间:2018-05-07
  • 文档格式:PDF
  • 文档大小:106.17KB
  • / 3 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 批量修改文件名:修改文件操作 疯狂代码 http://CrazyC ĵ:http:/CrazyC 想想如果你要写个加密或者病毒都需要对文件进行修改(写操作)在dos下系统提供有相应功能来完成 这样操作如:“打开文件\移动指针\读文件\写文件\关闭文件”在windows下系统也提供有相应Api如 “CreateFile\SetFilePoer\ReadFile\WriteFile\SetEndOfFile\CloseHandle”等利用这些编程和dos下没什么 两样这里就不再多说啦!咱们今天要用是利用“内存映射文件”来操作简单说就是把文件内容映射到个内存块 改变这块内存内容就是改变文件内容系统可提供这块内存巨大、平坦操作起来真是方便! 这种思路方法要用到 “CreateFile/CreatFileMapping/MapViewOfFile/UnmapViewOfFile/CloseHandle”具体使用参考 “Win32 Developer's References”俺也是刚看不敢乱说嘿嘿嘿 -------------------------------------------------------------- ;例:打开个已存在文件并修改建议文件具有定大小比如80H字节 ;文件名:12.asm .386 .Model Flat, StdCall Option Casemap :None ;--------------------------------------------------------- Include windows.inc Include kernel32.inc IncludeLib kernel32.lib ModyFile PROTO :LPSTR .data MyFile db 'd:\masm7\MyTest',0 ;文件MyTest必须存在若不存在将什么也不做 M1 db 'Good morning',0 ;将写到文件中串 M2 db 'Good afternoon',0 M3 db 'Good evening',0 ;--------------------------------------------------------- .data? hFile dd ? hMap dd ? pMapAddr dd ? ;--------------------------------------------------------- .code START: invoke CreateFile, \ ;打开文件该具有多种功能 ADDR MyFile,\ ;指向要打开文件名串 GENERIC_READ or GENERIC_WRITE ,\ ;打开文件具有读写权限 FILE_SHARE_READ or FILE_SHARE_WRITE,\ ;别人也可读写此文件 NULL, \ ;95下不用 OPEN_EXISTING, \ ;要打开文件必须存在 FILE_ATTRIBUTE_NORMAL,\ ;文件属性 NULL ;95下必须是NULL . eax!=INVALID_HANDLE_VALUE ;判断文件是否已正常打开 mov hFile, eax ;保存文件句柄 invoke CreateFileMapping, \ ;creates file-mapping object for the specied file. hFile, \ ;Identies the file from which to create a mapping object NULL, \ ;ignored PAGE_READWRITE, \ ;access 0, \ ;high-order 32 bits of the maximum size 0, \ ;low-order 32 bits of the maximum size NULL ;the mapping object is created without a name . eax!=NULL ; mov hMap,eax ;the value is a handle to the file-mapping object invoke MapViewOfFile,hMap,FILE_MAP_WRITE,0,0,NULL ;映射文件到内存 . eax!=NULL mov pMapAddr,eax ;保存返回内存块首地址 invoke ModyFile,pMapAddr ;修改内存块内容 invoke UnmapViewOfFile,pMapAddr ;解除文件映射 .end invoke CloseHandle,hMap ;关闭内存映射文件 .end invoke CloseHandle, hFile ;关闭文件 .end invoke ExitProcess,0 ;结束 ;修改内存块内容就相当于修改文件内容 ModyFileproc uses ebx esi edi,lpBufferAddress:LPSTR mov edi,lpBufferAddress ;取内存块地址 invoke lstrcpy,edi,addr M1 ;修改内存块内容 add edi,40h ;调整地址(随意) invoke lstrcpy,edi,addr M2 ;修改 add edi,240h invoke lstrcpy,edi,addr M3 ret ModyFileendp END START ---------------------------------------------------------------------- 注意: 0、运行后无任何提示只可从被修改文件上看变化 1、第39、40行值都是0这样内存映射文件大小就正好取文件实际大小 2、可以看到第62、63行修改并没起作用文件没有这样大 3、将40行数据改为100H可看到运行后原文件大小将变为100H 4、将40行数据改为200H47行指令屏蔽掉不执行运行后可看到文件大小将成200H 5、此时将40行数据改为80H运行文件不会变小 6、恢复47行指令运行后文件亦不能减小 7、真想减少文件尺寸可在52行前多执行两条指令:①SetFilePoer②SetEndOfFile 8、其他没测试自己琢磨吧! 2009-1-8 2:46:38 疯狂代码 http://CrazyC 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.