首页
社区
课程
招聘
[求助]求一个字符串替换的汇编函数哈!谢谢~
发表于: 2011-1-16 17:03 4851

[求助]求一个字符串替换的汇编函数哈!谢谢~

2011-1-16 17:03
4851
在od里调试了一个软件,软件从网络获取xml数据,存放数据的地址已经找到,地址放在edx里,我做了一个跳转,想要用一个函数(以edx的值和另外我要替换的字符串所在地址的值作为参数),直接把原数据里面的一些字符(有多处)给替换成我自己设定的。

比如:“fasfhksh123afue123hfk123ahfkdahfkhdhafeef”
将其中的123替换成456

函数好写,只是我没编程软件,又不大懂汇编。
求大侠赐我一个吧~~非常感谢,简单地说,功能就是:字符串替换,参数为原字符串地址和替换字符串地址,不需要返回值。
谢谢!!!!

[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 269
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
补充一点,替换的串与被替换的串长度相同~
2011-1-16 17:12
0
雪    币: 16
活跃值: (10)
能力值: ( 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
**********************************************************************************
2011-1-16 20:10
0
雪    币: 269
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
先谢谢楼上的弟兄,我看看~~
2011-1-16 21:34
0
游客
登录 | 注册 方可回帖
返回
// // 统计代码