- 积分
- 431
- 实力分
- 点
- 金钱数
- 两
- 技术分
- 分
- 贡献分
- 分
|
发表于 2008-8-26 18:48:47
|
显示全部楼层
回复 185# ljmstock 的帖子
从内存的某个地址段代码覆盖另一个地址段,这个我没用到过:
以前查资料的时候看见有系统拷贝函数:
27D410: E6 F1 10 00 : mov r1, #10h ;把立即数10写入r1
27D414: 88 10 : mov [-r0], r1 ;r1入栈
27D416: E6 FC 40 3D : mov r12, #3D40h ;向r12写入立即数3d40
27D41A: E6 FD 11 00 : mov r13, #11h ;向r13写入立即数11
27D41E: E6 FE 5E 14 : mov r14, #145Eh ;向r14写入立即数145e
27D422: E6 FF 1F 03 : mov r15, #31Fh ;向r15写入立即数31f
27D426: DA C7 9E 85 : calls 0C7h, loc_C7859E ;系统库函数strncpy,Copy string ended by 0 from r15:r14 to r13:r12
27D42A: 08 02 : add r0, #2 ;栈加2,也就是栈顶上移2
27D42C: D7 40 36 00 : extp #36h, #1 ;切换到36页,有效指令一条
27D430: C2 F1 62 03 : movbz r1, 0D8362h ; (0036:0362) 把0036:0362处的数据移动到r1
27D434: E6 FD 11 00 : mov r13, #11h ;向r13写入立即数11
27D438: 46 F1 2A 00 : cmp r1, #2Ah ;用r1的值减2a,且不修改r1数据,我们可以理解为判断r1是否为2a
27D43C: 2D 03 : jmpr cc_Z, loc_27D444 ;2d03 意为如果相等则跳转
ok,再看系统库函数strncpy:Copy string ended by 0 from r15:r14 to r13:r12
也就是说把31f,145e处的数据复制到11,34d0,于0结束 |
|