我试图准确了解以下循环中发生的情况。我已经评论了我认为正在发生的事情。除了在 ImmunityDebugger 中运行代码并观察行为之外,我通过谷歌搜索每个操作代码并试图理解它的含义,得出了这些结论。
我不确定这是否是最有效的研究方式。请让我知道是否有其他最佳实践来发现相对较少的代码选择的功能。
内存地址会发生什么00401053?在这种情况下 XOR 会做什么?
0040104B |. 31C9 XOR ECX,ECX
0040104D |> 8A81 58214000 /MOV AL,BYTE PTR DS:[ECX+402158] ;Move first byte of [ECX+402158] into AL
00401053 |. 34 7D |XOR AL,7D ;Not sure what this means
00401055 |. 3A81 40214000 |CMP AL,BYTE PTR DS:[ECX+402140] ;Compare AL with the first byte of [ECX+402140]
0040105B 75 1E |JNZ SHORT i_am_hap.0040107B ;Jump out of loop if not zero << What does that mean?
0040105D |. 41 |INC ECX ;increment ECX value
0040105E |. 83F9 18 |CMP ECX,18 ;loop runs 18 times
00401061 ^7C EA \JL SHORT i_am_hap.0040104D ;If above CMP fails restart the loop