首页
社区
课程
招聘
变量和常量在内存里有什么不同?
发表于: 2004-7-30 15:43 5485

变量和常量在内存里有什么不同?

2004-7-30 15:43
5485
我想给FOXMAIL做个SMC,要改一个字符,用mov byte ptr[xxx], xx改了以后OD报访问非法,调用如下:
004AF47E  |. FF75 DC        PUSH DWORD PTR SS:[EBP-24]
004AF481     68 04F64A00    PUSH Foxmail.004AF604                    ;  ASCII " 5"
004AF486  |. 8D45 E0        LEA EAX,DWORD PTR SS:[EBP-20]
004AF489  |. BA 03000000    MOV EDX,3
004AF48E  |. E8 414CF5FF    CALL Foxmail.004040D4
004AF493  |. 8B55 E0        MOV EDX,DWORD PTR SS:[EBP-20]
004AF496  |. 8BC3           MOV EAX,EBX

004AF604的内容:
004AF5FB     00             DB 00
004AF5FC   . FFFFFFFF       DD FFFFFFFF
004AF600   . 02000000       DD 00000002
004AF604   . 20 35 00       ASCII " 5",0
004AF607     00             DB 00
我插入一段代码来改这个004AF604的值.

报错以后我怀疑004AF604放的是一个常量,然后自己找块空间放了个新值:
0057A6FB     00             DB 00
0057A6FC     2031           AND BYTE PTR DS:[ECX],DH  ;" 1"
0057A6FE     00             DB 00

然后改上面的push为
PUSH Foxmail.0057A6FC

但是运行到最后FOXMAIL竟然是死掉了.(如果只是改原地址的值,只报错,不死,指到新地址就会死)

不知道是什么原因,请大家指教

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 2
支持
分享
最新回复 (4)
雪    币: 519
活跃值: (1223)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
2
可能4Axxxx那段代码的属性不对,改为可写试试。
2004-7-30 16:08
0
雪    币: 237
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
最后出错的时候停在KERNEL32领空
77E4D745   57               PUSH EDI
77E4D746   8D7D C4          LEA EDI,DWORD PTR SS:[EBP-3C]
77E4D749   F3:A5            REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS>
77E4D74B   5F               POP EDI
77E4D74C   8D45 B0          LEA EAX,DWORD PTR SS:[EBP-50]
77E4D74F   50               PUSH EAX
77E4D750   FF15 F814E477    CALL DWORD PTR DS:[<&ntdll.RtlRaiseExcep>; ntdll.RtlRaiseException
77E4D756   5E               POP ESI                                  ; 0012FE44
77E4D757   C9               LEAVE

可能是新地址和FOXMAIL那个窗体不在同块空间,我是在CODE段的最后找到一块000000000的地方,在这里写新的值的,怎么让这个地址的值成为全局变量啊
2004-7-30 16:27
0
雪    币: 107
活跃值: (876)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
4
最初由 RoBa 发布
可能4Axxxx那段代码的属性不对,改为可写试试。


2004-7-30 17:14
0
雪    币: 237
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
改成可写也不行哦. 我没撤了

比较了一下常量和变量基本上没发现有什么不同
字符串都是
FFFFFFFF  //意义不详
00000002  //长度
2031      //串内容
00        //结束

就是变量在函数前,常量在函数后(这个可能根本就不是区别)
2004-7-30 17:36
0
游客
登录 | 注册 方可回帖
返回