首页
社区
课程
招聘
[求助]一段asm求精简
发表于: 2013-11-22 11:31 3838

[求助]一段asm求精简

2013-11-22 11:31
3838
lea         eax,[esp+0xF8]
09F0190C  56                    push        esi
09F0190D  57                    push        edi
09F0190E  BF 08 B2 F0 09        mov         edi,0x9F0B208
09F01913  0F B6 48 10           movzx       ecx,byte ptr [eax+0x10]
09F01917  51                    push        ecx
09F01918  0F B6 48 0F           movzx       ecx,byte ptr [eax+0xF]
09F0191C  51                    push        ecx
09F0191D  0F B6 48 0E           movzx       ecx,byte ptr [eax+0xE]
09F01921  51                    push        ecx
09F01922  0F B6 48 0D           movzx       ecx,byte ptr [eax+0xD]
09F01926  51                    push        ecx
09F01927  0F B6 48 0C           movzx       ecx,byte ptr [eax+0xC]
09F0192B  51                    push        ecx
09F0192C  0F B6 48 0B           movzx       ecx,byte ptr [eax+0xB]
09F01930  51                    push        ecx
09F01931  0F B6 48 0A           movzx       ecx,byte ptr [eax+0xA]
09F01935  51                    push        ecx
09F01936  0F B6 48 09           movzx       ecx,byte ptr [eax+0x9]
09F0193A  51                    push        ecx
09F0193B  0F B6 48 08           movzx       ecx,byte ptr [eax+0x8]
09F0193F  51                    push        ecx
09F01940  0F B6 48 07           movzx       ecx,byte ptr [eax+0x7]
09F01944  51                    push        ecx
09F01945  0F B6 48 06           movzx       ecx,byte ptr [eax+0x6]
09F01949  51                    push        ecx
09F0194A  0F B6 48 05           movzx       ecx,byte ptr [eax+0x5]
09F0194E  51                    push        ecx
09F0194F  0F B6 48 04           movzx       ecx,byte ptr [eax+0x4]
09F01953  51                    push        ecx
09F01954  0F B6 48 03           movzx       ecx,byte ptr [eax+0x3]
09F01958  51                    push        ecx
09F01959  0F B6 48 02           movzx       ecx,byte ptr [eax+0x2]
09F0195D  51                    push        ecx
09F0195E  0F B6 48 01           movzx       ecx,byte ptr [eax+0x1]
09F01962  51                    push        ecx
09F01963  0F B6 08              movzx       ecx,byte ptr [eax]
09F01966  51                    push        ecx
09F01967  68 20 81 F0 09        push        0x9F08120        ; "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"
09F0196C  57                    push        edi
09F0196D  FF 15 D0 60 F0 09     call        dword ptr [wsprintfA]
09F01973  83 C4 44              add         esp,0x44        ; 'D'
09F01976  59                    pop         ecx
09F01977  58                    pop         eax
09F01978  5F                    pop         edi
09F01979  5E                    pop         esi
09F0197A  C3                    ret


小弟初学 谁帮忙精简下这段代码

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 84
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
用rep loads啊。。。
或者先移动一下esp...然后用rep movs都行。。
2013-11-22 11:49
0
雪    币: 659
活跃值: (499)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
3
不就是wsprintfA(pBuffer, "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
(DWORD)pBYTE[0], (DWORD)pBYTE[1], (DWORD)pBYTE[2], (DWORD)pBYTE[3], (DWORD)pBYTE[4], (DWORD)pBYTE[5], (DWORD)pBYTE[6], (DWORD)pBYTE[7], (DWORD)pBYTE[8], (DWORD)pBYTE[9], (DWORD)pBYTE[10], (DWORD)pBYTE[11], (DWORD)pBYTE[12], (DWORD)pBYTE[13], (DWORD)pBYTE[14], (DWORD)pBYTE[15], (DWORD)pBYTE[16]);
pBuffer = edi = 0x9F0B208
pBYTE = [esp+0xF8]

功能貌似是对单字节字符转化为双字节字符,高位字节补0
用字符串操作指令来写的话貌似很麻烦,用循环感觉比较简单
mov		esi, [esp+0xF8]
mov		edi, 0x9F0B208
mov		ecx, 16
Loop1:
movzx	ax, BYTE ptr [esi]
mov		[edi], ax
inc		esi
inc		edi
inc		edi
loop	Loop1
2013-11-22 11:51
0
雪    币: 8
活跃值: (33)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
[QUOTE=organic;1241585]不就是wsprintfA(pBuffer, "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
(DWORD)pBYTE[0], (DWORD)pBYTE[1], (DWORD)pBYTE[2], (DWORD)p...[/QUOTE]

对的就是这玩意 不过这样写不觉得很麻烦么
2013-11-22 12:00
0
雪    币: 8
活跃值: (33)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
初学 我想过用dec ecx  cmp ecx来实现

搞了半天容易出错
2013-11-22 12:01
0
雪    币: 659
活跃值: (499)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
6
代码给你补上面了
2013-11-22 12:26
0
雪    币: 859
活跃值: (314)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
7
lea   esi, [esp+0xF8]
mov   edi, 0x9F0B208
mov   ecx, 17
xor   eax, eax
:loop1
lodsb
stosd
loop loop1
2013-11-22 13:10
0
游客
登录 | 注册 方可回帖
返回
//