转换汇编到C++时遇到的问题:
0040123F . 8D7C24 28 LEA EDI,DWORD PTR SS:[ESP+28]
00401243 . 83C9 FF OR ECX,FFFFFFFF
00401246 . 33C0 XOR EAX,EAX
00401248 . F2:AE REPNE SCAS BYTE PTR ES:[EDI]
0040124A . F7D1 NOT ECX
0040124C . 2BF9 SUB EDI,ECX
0040124E . 8BD1 MOV EDX,ECX
00401250 . 8BF7 MOV ESI,EDI
00401252 . 33FF XOR EDI,EDI
00401254 . C1E9 02 SHR ECX,2
00401257 . F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
00401259 . 8BCA MOV ECX,EDX
0040125B . 83E1 03 AND ECX,3
0040125E . F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
00401260 . 5F POP EDI
00401261 . 5E POP ESI
00401262 . 81C4 C4000000 ADD ESP,0C4
00401268 . C2 1000 RETN 10
其中0040123F中的SS:[ESP+28]为一字符串的地址,
我分析从00401243到0040124A是取得这个字符串的长度, 但是接下来就有点莫名其妙了, 尤其是在00401252后调用REP MOVS 导致 access violation !
请教各位, 这些汇编代码是从哪些C/C++的语句编译过来的 ?
C/C++中哪些语句会调用REP MOVS ?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课