能力值:
( LV2,RANK:10 )
|
-
-
2 楼
补充一点,替换的串与被替换的串长度相同~
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
我查到的用这个也很简单
CString cs1,cs2;
cs1="123456789";
cs2="abcdefghi";
__asm
{
mov esi,cs1//A函数地址
mov edi,cs2//B函数地址
mov ecx,9h
rep movsb
}
MessageBox(cs2);
**************************************************************************
mov esi, dword ptr [ebp+8] ;将堆栈ebp+8的4个字节的值送入esi(源字串数组地址)
lea edi, dword ptr [ebp-48] ;将堆栈ebp-48的4个字节的值送入edi(目的字串数组偏移地址)
push ecx
mov ecx, 0f ;字串操作次数
rep movs dword ptr es:[edi], dword ptr [esi] ;将源字串送入目的字串
pop ecx
*******************************************************************************
movs系列指令
ds:esi 源
es:edi 目的
cx 次数
rep movsb 一次一字节源向目的拷贝一字节数据 拷贝后自动调整指针到下个字符
拷贝次数由 ecx值决定 应该是这样的
实际写的时候 都是
rep movsb = rep movs byte ptr es:[edi], byte ptr [esi]
rep movsw = rep movs word ptr es:[edi], word ptr [esi]
rep movsd = rep movs dword ptr es:[edi], dword ptr [esi]
******************************************************************************
写smc代码
下面就是用A里面的数据替换B里面的数据
pushad
mov esi,cs1//A函数地址
mov edi,cs2//B函数地址
mov ecx,9h /替换的长度。
rep movsb 一个一个的替换掉B里面的数据
popad
**********************************************************************************
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
先谢谢楼上的弟兄,我看看~~
|
|
|