关键call和关键跳(eax决定)


无壳,进去直接搜“注册”两字。
1.jpg

跟过去,找到上面的je跳转。je的跳转基于ZF的数,如果zf=1即跳转。那上面肯定就会处理zf的值。找到上面的call(断点)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
al+ah=ax
指eax里,低8位的是al(后面两位的数字),高八位的是ah(倒数第四位-倒数第三位)
将al和al与的值给al


>>> 1 & 1
1
>>> 0 & 0
0

因为al为0,所以sf=0, zf=1, pf=1 ;
因为al为1,所以sf=0, zf=0, pf=0

让al=1,所以zf=0,所以je的跳转就不会实现

所以我们只用赋值eax=1,al就=1了

2.jpg

运行起来之后随便输
3.jpg

断在这里之后,f7进入call的跳转
4.jpg

修改mov eax,1(把1赋值给eax,al就=1)。ret在跳出去
5.jpg

保存且成功之后。注册的按钮就会变灰了
6.jpg