计算一段假码的余数存储到edi+ebx中:
00401664 |. B9 0A000000 mov ecx,0xA ; 把0xA 赋值给ecx
00401669 |> 0FBE041E /movsx eax,byte ptr ds:[esi+ebx] ; 将 假码的第一个字节的机器码 赋值给eax
0040166D |. 99 |cdq ; 扩展命令
0040166E |. F7F9 |idiv ecx ; edx 和 eax合并 除以0xA 商放在eax 余数放在edx
00401670 |. 88141F |mov byte ptr ds:[edi+ebx],dl ; 将 余数edx 赋值给edi+ebx(用来存储 修改过的假码)
00401673 |. 43 |inc ebx ; ebx递增1
00401674 |. 3B1D 67344000 |cmp ebx,dword ptr ds:[0x403467] ; 判断当前的长度是否跟假码的长度相同
0040167A |.^ 75 ED \jnz short 软编码序.00401669 ; 不同 跳回去
原文:https://www.cnblogs.com/zpchcbd/p/12074884.html