首页
社区
课程
招聘
未解决 [求助]汇编不熟,请高手指点一下谢谢
发表于: 2019-12-15 23:35 2774

未解决 [求助]汇编不熟,请高手指点一下谢谢

2019-12-15 23:35
2774

00711EC4  /$  53            PUSH EBX
00711EC5  |.  56            PUSH ESI
00711EC6  |.  57            PUSH EDI
00711EC7  |.  51            PUSH ECX
00711EC8  |.  8BF2          MOV ESI,EDX
00711ECA  |.  33D2          XOR EDX,EDX
00711ECC  |.  8A10          MOV DL,BYTE PTR DS:[EAX]
00711ECE  |.  8A1495 B4F819>MOV DL,BYTE PTR DS:[EDX*4+119F8B4]
00711ED5  |.  C1E2 02       SHL EDX,2
00711ED8  |.  0FB678 01     MOVZX EDI,BYTE PTR DS:[EAX+1]
00711EDC  |.  8B0CBD B4F819>MOV ECX,DWORD PTR DS:[EDI*4+119F8B4]
00711EE3  |.  C1E9 04       SHR ECX,4
00711EE6  |.  0AD1          OR DL,CL
00711EE8  |.  881424        MOV BYTE PTR SS:[ESP],DL
00711EEB  |.  C706 01000000 MOV DWORD PTR DS:[ESI],1
00711EF1  |.  8A50 02       MOV DL,BYTE PTR DS:[EAX+2]
00711EF4  |.  80FA 3D       CMP DL,3D
00711EF7  |.  74 20         JE SHORT UClient.00711F19
00711EF9  |.  FF06          INC DWORD PTR DS:[ESI]
00711EFB  |.  8A0CBD B4F819>MOV CL,BYTE PTR DS:[EDI*4+119F8B4]
00711F02  |.  C1E1 04       SHL ECX,4
00711F05  |.  33DB          XOR EBX,EBX
00711F07  |.  8ADA          MOV BL,DL
00711F09  |.  8B1C9D B4F819>MOV EBX,DWORD PTR DS:[EBX*4+119F8B4]         aaaa
00711F10  |.  C1EB 02       SHR EBX,2
00711F13  |.  0ACB          OR CL,BL
00711F15  |.  884C24 01     MOV BYTE PTR SS:[ESP+1],CL
00711F19  |>  8A48 03       MOV CL,BYTE PTR DS:[EAX+3]
00711F1C  |.  80F9 3D       CMP CL,3D
00711F1F  |.  74 21         JE SHORT UClient.00711F42
00711F21  |.  FF06          INC DWORD PTR DS:[ESI]
00711F23  |.  81E2 FF000000 AND EDX,0FF
00711F29  |.  8A1495 B4F819>MOV DL,BYTE PTR DS:[EDX*4+119F8B4]                   aaaa
00711F30  |.  C1E2 06       SHL EDX,6
00711F33  |.  33C0          XOR EAX,EAX
00711F35  |.  8AC1          MOV AL,CL
00711F37  |.  0A1485 B4F819>OR DL,BYTE PTR DS:[EAX*4+119F8B4]                         aaaa
00711F3E  |.  885424 02     MOV BYTE PTR SS:[ESP+2],DL
00711F42  |>  8B0424        MOV EAX,DWORD PTR SS:[ESP]
00711F45  |.  5A            POP EDX
00711F46  |.  5F            POP EDI
00711F47  |.  5E            POP ESI
00711F48  |.  5B            POP EBX
00711F49  \.  C3            RETN

上面标注aaaa的地方  OR DL,BYTE PTR DS:[EAX*4+119F8B4]    里面的 BYTE PTR DS:[EAX*4+119F8B4] 同样的代码,不同地方的取值不一样,不知道这到底取的是什么地方的结果,麻烦高手老师给指点一下,代码看的不是很懂,谢谢

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

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 962
活跃值: (9966)
能力值: ( LV13,RANK:385 )
在线值:
发帖
回帖
粉丝
2
eax是索引,4是类型,后面应该是偏移,所以了是个数组。
2019-12-16 00:30
0
雪    币: 257
活跃值: (194)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
3
	char string[] = "this is a string.";
	__asm
	{
		lea ebx, string
		mov al, byte ptr ds:[ebx]
		mov cx, word ptr ds:[ebx]
		mov edx, dword ptr ds:[ebx]
		mov ah, byte ptr ds:[ebx*1+1]
		nop
		nop
	}
如上面的代码:
mov al, byte ptr ds:[ebx]是到ds段偏移量为ebx的地址处取一个字节到al寄存器中,所以此时al=0x74('t'的ascii码)
类推,word是取两个字节,所以cx=0x6874('h'的ascii为0x68)
dword是取双字,也就是四个字节,edx=0x73696874
mov ah, byte ptr ds:[ebx*1+1]是到ds段的(ebx*1+1)的偏移处取一个字节到ah,所以ah=0x68(‘h’)

自己可以到VS用内联汇编熟悉一下。
2019-12-16 15:31
0
游客
登录 | 注册 方可回帖
返回
//