[讨论]如何编程修改exe内存里的数据,并将结果保存到exe
.386
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
.data
szText db '你可以把我修改成别的内容吗',0
.code
start:
invoke MessageBox, NULL, addr szText,NULL, MB_OK
invoke ExitProcess,NULL
end start
现在编译这个代码,然后在这个程序的内存中修改并且保存szText的内容...
按照一般的思路是,在修改之前,首先找到它的内存地址或者它本身,例如下面代码是在这个exe中寻找“你可以把我修改成别的吗”这个字符串:
.data
szText db '你可以把我修改成别的吗',0
invoke CreateFile,_lpszFile,GENERIC_READ,\ ;打开找到的文件
FILE_SHARE_READ or FILE_SHARE_WRITE,NULL,\
OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE,NULL
.if eax != INVALID_HANDLE_VALUE
mov @hFile,eax
invoke GetFileSize,eax,NULL
mov @dwFileSize,eax
.if eax
invoke CreateFileMapping,@hFile,\
NULL,PAGE_READONLY,0,0,NULL
.if eax
mov @hMapFile,eax
invoke MapViewOfFile,eax,\
FILE_MAP_READ,0,0,0
.if eax
mov @lpMemory,eax
mov ecx, @dwFileSize ;保存文件长度
sub ecx,10; 子字符串长度减 1
mov esi, @lpMemory ;保存共享句柄
@@:
mov edi, offset szText
push ecx
push esi
mov ecx,13 ; 子字符串长度
repe cmpsb ;这里对比,如果不符合,就继续
pop esi
pop ecx
je @f
inc esi
loop @b
@@:
.if ecx != 0 ;找到了字符串
;这里开始处理.....
至于怎么替换掉szText ,并把它保存成我想要的数据,这里我就不懂了,请朋友们指教!
顺便在问一下,win32汇编里有RtlZeroMemory,怎么就没有RtlCopyMemory..
怎么用另外的方法来实现和RtlCopyMemory相同的功能?
是否这样实现:
invoke lstrlen,addr szBuffer
lea esi,szBuffer
mov edi,lpData
add edi,000800h
mov ecx,eax
cld
rep movsb
还有其他方法吗?
相关推荐
技术关键词112335
技术关键词112335
简易EXE图标自定义工具:图标修改器使用教程
在现代信息技术中,软件的用户体验不仅仅取决于其功能性,更在于其直观性和美观性。图标作为软件的"面孔",在用户界面中扮演了至关重要的角色。EXE文件图标修改器应运而生,为用户提供了自定义应用程序图标的能力,从而提升软件的辨识度和个性化水平。功能上,图标修改器通常包括以下几点:- 支持多种图标格式(如.ico, .png, .jpg等)。- 提供界面友好的操作流程,包括目标EXE文件的选取、新图标的加载与预览。- 自动处理图标修改对EXE文件的影响,以保持程序的可执行性。
Python脚本实现向Excel指定行写入数据并保存
Python是由Guido van Rossum于1989年圣诞节期间发明的,最初目的是为了实现一种“易于阅读,且具有明确意义”的语言。Python的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或关键字)。Python支持多种编程范式,包括面向对象、命令式、函数式和过程式编程。Python的开源性吸引了全球的开发者为其贡献代码,库的丰富使得Python几乎可以胜任任何类型的任务。
EXE图标修改器:打造个性化应用程序界面
本文还有配套的精品资源,点击获取 简介:应用程序图标对于用户体验至关重要,"EXE图标修改器"是一款便捷的工具,允许用户更改可执行文件(EXE)的图标。通过读取EXE文件的资源部分并替换图标,无需编程知识即可个性化应用程序。此工具覆盖广泛,适用99%的.exe程序,增强了应用程序界面的自定义潜力。文章还提醒用户注意图标兼容性、文件权限、程序签名和兼容性测试,以确保图标修改后...
深入探索Patch内存修改技术
Patch本质上是软件或系统的更新组件,用于修复、改进或添加新的功能。它是软件维护过程中的一个重要环节,确保软件能够在新环境或应对新挑战中继续稳定运行。在IT领域,几乎所有的软件产品都需要定期或不定期地发布Patch来应对各种问题。在我们深入了解内存修改技术的过程中,我们已经探讨了其核心原理、实际操作流程以及在不同领域中的应用。通过各个章节的分析,我们可以看到,内存修改技术虽然复杂,但已逐步成为IT专业人员必须掌握的一项技能。


