|
LV10
站长
双击下方地址栏中的地址,在上一课我们双击的是数值
我们可以得到的是当前地址为:test.exe+A0280,其实上图的左边也有(我用箭头指出来了),可以右键复制选中地址,这个test.exe叫模块地址,你们也可以称为基址,A0280叫偏移(这是16进制的写法),也就是这里涉及到十六进制的运算,为什么要使用这种基址+偏移的写法我们后面再讲
变量名 | 类 型 | 静态 | 数组 | 备 注 | 程序名 | 文本型 | | | 模块名 | 文本型 | | | 进程pid | 整数型 | | | 模块地址 | 长整数型 | | | x32 | X32读写 | | | 读取的数据 | 文本型 | | | 逻辑值 | 逻辑型 | | |
程序名 = “test.exe” 模块名 = “test.exe”进程pid = 进程_名取ID (程序名 )判断 (进程pid = 0 )信息框 (“程序未运行”, 0, , )模块地址 = x32. 取模块地址 (进程pid, 模块名, 进制_十六到十 (“A0280”)) 判断 (模块地址 = 0 )信息框 (“模块地址未找到,请检查模块名是否正确”, 0, , )调试输出 (x32. 读整数型 (模块地址 )) 逻辑值 = x32. 写整数型 (模块地址, 666 ) 判断 (逻辑值 = 真)信息框 (“修改成功”, 0, , )信息框 (“修改失败”, 0, , )
代码解释:
①:首先代码使用到了精易模块,几乎我们每一份源码都用到了
②:代码使用了内存读写模块,网上也有不少,我这里随便找了个
③:进程名和模块名只是刚好一样,进程名就是软件运行时的名称,模块名以CE的为标准
④:取模块地址是精华,在上面我提到了test.exe+A0280是目标内存地址,而取模块地址得到的就是test.exe(模块名)的10进制的值,什么叫10进制的值很多人可能不理解,不理解的看知识手册:004:【进制的理解】 ,进制_十六到十 (“A0280”)得到的是偏移的10进制的结果
⑤:进程pid是什么,011:【进程名和进程id(pid)】
⑥:整份代码看上去非常简单,填空就行,那是因为模块别人都封装好了,调用就行,所以,学编程是要学理论,代码不难写,模块很多
修改程序的源码:
修改程序.e
(939.79 KB, 下载次数: 238)
测试程序的源码:上一节已经上传了,编译的时候程序名要指定为test.exe,否则代码里要修改程序名和模块名
内存读写模块:
API读写模块.ec
(31.05 KB, 下载次数: 196)
(点击返回课程目录:https://shuxiangyage.net/forum.php?mod=viewthread&tid=1134)
|
|