首页
社区
课程
招聘
[旧帖] [求助]mbr 中 cmp [bp+0], ch 0.00雪花
发表于: 2012-7-9 15:06 1290

[旧帖] [求助]mbr 中 cmp [bp+0], ch 0.00雪花

2012-7-9 15:06
1290
seg000:7C00                 xor     ax, ax            
seg000:7C02                 mov     ss, ax
seg000:7C04                 mov     sp, 7C00h      
seg000:7C07                 sti
seg000:7C08                 push    ax
seg000:7C09                 pop     es
seg000:7C0A                 push    ax
seg000:7C0B                 pop     ds                 
seg000:7C0C                 cld
seg000:7C0D                 mov     si, 7C1Bh     
seg000:7C10                 mov     di, 61Bh
seg000:7C13                 push    ax
seg000:7C14                 push    di
seg000:7C15                 mov     cx, 1E5h
seg000:7C18                 rep movsb
seg000:7C1A                 retf                           
seg000:7C1B ; ---------------------------------------------------------------------------
seg000:7C1B                 mov     bp, 7BEh        
seg000:7C1E                 mov     cl, 4           
seg000:7C20
seg000:7C20 loc_7C20:                              
seg000:7C20                 cmp     [bp+0], ch      ; ch因该是0
seg000:7C23                 jl      short loc_7C2E   
seg000:7C25                 jnz     short loc_7C3A  

疑问是 地址7c20指令:
cmp     [bp+0], ch  
应该是  cmp 80h,0
这个cx  已经被rep 重复到0了啊。想不通

另外,我在问问,这汇编指令,有没有手工验证的方法?

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 8
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
查了好多mbr分析的都说。
0000:0620 382C       CMP    [SI],CH       ;
0000:0622 7C09       JL     062D          ;大于等于80h转[注意JL指令:(SF xor OF)=1则转]
0000:0624 7515       JNZ    063B          ;不为0则[SI]一定小于80h,只能转错误处理了!

jl,明明是小于啊。

哪为好心人能,帮帮我啊。

好不容易找到了一断描述
我不得不说写这段代码的人有才,我解释下这两句代码的妙处:开始的时候cl=4h,ch=0h,而活动分区的标志应该是80h,二进制是1000 0000。用跳转jl也就是说当标志是小于0的数的时候这个分区是活动分区,标志小于0是什么情况?不就是符合位为1的时候么?80h不就是小于0的么……另外你可能注意到比较的值和循环的控制值都放在CX里,这就是找分区标志却不直接跟80h比的原因:让CX同时做两个用处

帮我解释下么?
2012-7-9 15:32
0
游客
登录 | 注册 方可回帖
返回
//