帮忙还原一段ASM代码,谢谢!
一程序用Delphi编写,运行需要验证密码(明文),用SOFT-ICE跟踪到比较密码过程,ASM代码如下:
...
0167:004C7EBE MOV EDX,[EBP-04] //把真实密码的地址送入EDX
0167:004C7EC1 MOV EAX,[BBP-08] //把输入待验证密码的地址送入EAX
0167:004C7EC4 CALL 00409124 //调用过程比较密码
0167:00409124 PUSH ESI //此过程比较密码
0167:00409125 PUSH EDI
0167:00409126 MOV ESI,EAX
0167:00409128 MOV EDI,EDX
0167:0040912A OR EAX,EAX
0167:0040912C JZ 00409131
0167:0040912E MOV EAX,[EAX-04]
0167:00409131 OR EDX,EDX
0167:00409133 JZ 00409138
0167:00409135 MOV EDX,[EDX-04]
0167:00409138 MOV ECX,EAX
0167:0040913A CMP ECX,EAX
0167:0040913C JBE 00409140
0167:0040913E MOV ECX,EDX
0167:00409140 CMP ECX,ECX
0167:00409142 REPZ CMPSB
0167:00409144 JZ 0040914E
0167:00409146 MOVZX EAX,BYTE PTR [ESI-01]
0167:0040914A MOVZX EDX,BYTE PTR [EDI-01]
0167:0040914E SUB EAX,EDX
0167:00409150 POP EDI
0167:00409151 POP ESI
...
0167:00409152 RET //返回
请问:1、详细讲解一下此段代码
2、把比较密码的过程还原成C
3、把比较密码的过程还原成Delphi
非常感谢!