记录:一些有意思的汇编片段

计算一段假码的余数存储到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 ; 不同 跳回去

用来检测调试:

7C81F424 > 64:A1 18000000 MOV EAX,DWORD PTR FS:[18]
7C81F42A 8B40 30 MOV EAX,DWORD PTR DS:[EAX+30]
7C81F42D 0FB640 02 MOVZX EAX,BYTE PTR DS:[EAX+2]

可以用于进行判断跳转

7411EA99 . 66:83F8 00 CMP AX,0 ; 影响ZF的标志位
7411EA9D > B8 00000000 MOV EAX,0 ; EAX 为0
7411EAA2 . 0F94C0 SETE AL ; 根据ZF标志位判断,如果ZF为1那么al为1,ZF为0,那么al为0
7411EAA5 . F7D8 NEG EAX ; 0 - eax的值赋值给eax 相当于取反
posted @   zpchcbd  阅读(206)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示