查看: 360|回复: 8

问个C++内存相关问题

[复制链接]

该用户从未签到

人海孤鸿

威望
32
金钱
434
贡献
2
推广数
0
紫钻
0
阅读权限
25
在线时间
14 小时
最后登录
2013-11-15
QQ
发表于 2013-7-12 15:15:28 | 显示全部楼层 |阅读模式
初学者,望大神们不吝赐教
比如如下一个C++定义修改内存的的宏代码
patch(0x406B53,"\x90\x8B\x09");
patch(0x2A0930,"\xD2");
如上代码中,前面应该是偏移量,后面的我猜猜是把0变1或者1变0的过程,但是具体如“\XD2”看不懂。为什么要加引号,以及XD2是代表高位还是低位?百度查了半天找不到相关内容
如有错误请指正
有的哪个大神来详细告诉下{:soso_e183:}
[发帖际遇]: 一个袋子砸在了 我来看看 头上,我来看看 赚了 11 金钱. 幸运榜 / 衰神榜
95583

该用户从未签到

超级版主

威望
321
金钱
2111
贡献
61
推广数
4
紫钻
2
阅读权限
240
在线时间
88 小时
最后登录
2013-11-10

狮子座Breeze管理组优秀版主版主专用入驻新人突出贡献论坛元老荣誉会员互助团帅哥勋章超级版主专用

发表于 2013-7-12 18:01:47 | 显示全部楼层
vc不懂易语言我可以教你
这个人是一个低调的人,什么都不会留下

该用户从未签到

茶馆传奇

威望
384
金钱
11456
贡献
108
推广数
0
紫钻
0
阅读权限
80
在线时间
91 小时
最后登录
2013-11-27

灌水之王入驻新人双子座论坛元老荣誉会员互助团突出贡献解答组金牛座

发表于 2013-7-12 18:38:54 | 显示全部楼层
我只拿成品 其他不懂
[发帖际遇]: mar1321 被钱袋砸中进医院,看病花了 7 金钱. 幸运榜 / 衰神榜

该用户从未签到

风云使者

威望
23
金钱
6133
贡献
0
推广数
0
紫钻
0
阅读权限
45
在线时间
32 小时
最后登录
2013-11-28
发表于 2013-7-12 19:13:12 | 显示全部楼层
\x后面跟的是字节码
汇编指令在内存中都是以字节码形式存在
比如汇编的nop指令,对应字节码为\x90
那么\x90\x8B\x09即为将该处的汇编指令替换为
nop
mov ecx,[ecx]
当然有时候还要结合该处上下文来看
有个工具叫Asm2MachineCode就是用于汇编指令和机器码转换的

该用户从未签到

御剑江湖

威望
42
金钱
170
贡献
10
推广数
0
紫钻
0
阅读权限
20
在线时间
3 小时
最后登录
2013-7-21
发表于 2013-7-13 09:41:40 | 显示全部楼层
  1. 比如如下一个C++定义修改内存的的宏代码
  2. patch(0x406B53,"\x90\x8B\x09");
  3. patch(0x2A0930,"\xD2");
复制代码
其实玩儿过OD就很容易理解了。

0x406B53,"\x90\x8B\x09"

前面的是内存地址,之后\x90\x8B\x09的是二进制代码


估计这个内存地址是个关键跳转。
  1. 00424FFB     /75 08             jnz short CCMClien.00425005
  2. 00424FFD     |6A 10             push 0x10
  3. 00424FFF  |. |E8 B2000000       call CCMClien.004250B6
  4. 00425004  |. |59                pop ecx
复制代码
  1. 00424FFB      90                nop    ;此处nop掉后,跳转就无效了
  2. 00424FFC      90                nop
  3. 00424FFD      6A 10             push 0x10
  4. 00424FFF  |.  E8 B2000000       call CCMClien.004250B6
  5. 00425004  |.  59                pop ecx
  6. 00425005  |>  33F6              xor esi,esi
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即加入

×

该用户从未签到

草莽豪杰

威望
37
金钱
1587
贡献
12
推广数
0
紫钻
0
阅读权限
30
在线时间
30 小时
最后登录
2013-11-12

入驻新人白羊座

发表于 2013-7-13 12:15:10 | 显示全部楼层
0X表示16进制,后面的数字是机器码,看看汇编怎么转换机器码的资料就很容易理解了

该用户从未签到

草莽豪杰

威望
69
金钱
787
贡献
20
推广数
0
紫钻
0
阅读权限
30
在线时间
25 小时
最后登录
2013-11-18
发表于 2013-7-13 14:29:01 | 显示全部楼层
你就理解成0x90形势就行了
[发帖际遇]: wow 发帖时在路边捡到 7 金钱,偷偷放进了口袋. 幸运榜 / 衰神榜

该用户从未签到

逍遥游侠

拾夏寒绝、浸秋泪散

威望
152
金钱
1731
贡献
124
推广数
0
紫钻
3
阅读权限
40
在线时间
60 小时
最后登录
2013-11-22

白羊座Breeze管理组

QQ
发表于 2013-7-13 19:08:55 | 显示全部楼层
加引号是因为patch函数第二个要求的是字符串的参数,因为要用字符串填充内存。
[发帖际遇]: 一个袋子砸在了 夜尽天明 头上,夜尽天明 赚了 7 金钱. 幸运榜 / 衰神榜

该用户从未签到

赏花闲客

威望
18
金钱
44
贡献
0
推广数
0
紫钻
0
阅读权限
15
在线时间
0 小时
最后登录
2013-10-30
发表于 2013-10-30 14:36:34 | 显示全部楼层
小白来看看
您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

QQ|Archiver|手机版|小黑屋|BR魔兽编程交流论坛 ( 湘ICP备2021017612号-1 )

GMT+8, 2025-8-22 02:16 AM , Processed in 0.342799 second(s), 34 queries .

Powered by breeze365

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表