[讨论]如何编程修改exe内存里的数据,并将结果保存到exe

n00000000p n00000000p 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
例如一个MessageBox的代码,要求编程实现修改数据:

.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文件的影响,以保持程序的可执行性。

Compass宁

Python脚本实现向Excel指定行写入数据并保存

Python是由Guido van Rossum于1989年圣诞节期间发明的,最初目的是为了实现一种“易于阅读,且具有明确意义”的语言。Python的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或关键字)。Python支持多种编程范式,包括面向对象、命令式、函数式和过程式编程。Python的开源性吸引了全球的开发者为其贡献代码,库的丰富使得Python几乎可以胜任任何类型的任务。

咸鱼豆腐

EXE图标修改器:打造个性化应用程序界面

本文还有配套的精品资源,点击获取 简介:应用程序图标对于用户体验至关重要,"EXE图标修改器"是一款便捷的工具,允许用户更改可执行文件(EXE)的图标。通过读取EXE文件的资源部分并替换图标,无需编程知识即可个性化应用程序。此工具覆盖广泛,适用99%的.exe程序,增强了应用程序界面的自定义潜力。文章还提醒用户注意图标兼容性、文件权限、程序签名和兼容性测试,以确保图标修改后...

青菜炒蛋

深入探索Patch内存修改技术

Patch本质上是软件或系统的更新组件,用于修复、改进或添加新的功能。它是软件维护过程中的一个重要环节,确保软件能够在新环境或应对新挑战中继续稳定运行。在IT领域,几乎所有的软件产品都需要定期或不定期地发布Patch来应对各种问题。在我们深入了解内存修改技术的过程中,我们已经探讨了其核心原理、实际操作流程以及在不同领域中的应用。通过各个章节的分析,我们可以看到,内存修改技术虽然复杂,但已逐步成为IT专业人员必须掌握的一项技能。

国营窝窝乡蛮大人
评论 8
收藏 已收藏
分享
返回顶部
n00000000p
汇编语言 21,500 成员 41,619 内容