修改返回值破解闪点卡密
**** Hidden Message *****这里其实是一个验证点,当然如果我不说你们可以也不知道,那么我们继续看
004145E7 8945 B8 mov dword ptr , eax
004145EA FF75 E8 push dword ptr
004145ED 68 62D07700 push 0077D062 ; &session=
004145F2 FF75 B8 push dword ptr
004145F5 68 FFE17C00 push 007CE1FF ; &rs=
004145FA FF75 F0 push dword ptr
004145FD 68 04E27C00 push 007CE204 ; &way1=null&way2=
00414602 FF75 BC push dword ptr
00414605 68 91D07700 push 0077D091 ; &sessionid=null&posttime=
0041460A FF75 CC push dword ptr
0041460D 68 ABD07700 push 0077D0AB ; &userpass=
00414612 FF75 D4 push dword ptr
00414615 68 15E27C00 push 007CE215 ; /soft/login/?username=
0041461A FF35 40189600 push dword ptr ; http://main.shandiankami.com
00414620 B9 0D000000 mov ecx, 0xD
00414625 E8 3FD1FEFF call 00401769
0041462A 83C4 34 add esp, 0x34
0041462D 8945 B4 mov dword ptr , eax '''''这里其实是把上面的参数连接起来,成为一个完整的链接,也就是验证地址
00414630 8B5D D4 mov ebx, dword ptr
然后在此下面,无非就是一些读配置文件之类的代码,我就不看了,重点看到的是刚刚上图的那个判断到底是由什么决定的
至此,我们来分析下代码吧
00415295 8945 D4 mov dword ptr , eax '''''首先是eax的值给了这个偏移地址
00415298 837D D4 01 cmp dword ptr , 0x1 ''''''然后是判断这个偏移地址的值是否为1
0041529C 0F85 24000000 jnz 004152C6 ''''''''如果值为1,就不跳,不为1,就跳
004152A2 B8 E8E27C00 mov eax, 007CE2E8 ; VIP1
004152A7 50 push eax
004152A8 8B1D 54189600 mov ebx, dword ptr ; VIP1
004152AE 85DB test ebx, ebx
所以我们不能让它跳,为什么?因为下面这个是vip1,如果跳过,可能导致失败,所以我们来看,到底这个eax的值是被谁改变了
我们从段首下断,一路F8到此处
通过修改这里,此时eax的值为0,之前的教程我有说过,0为假,1为真
所以这里我们改1,试试下面的判断会不会跳过
当我们修改以后,发现eax的值为1,两个值相等,jnz不跳,说明这个点我们修改对了,
然后我们继续往下跟,到此运行发现不再出现
是不是挺简单的呢?
不过为了以防万一
再修改两个点的值为1吧
00415295 8945 D4 mov dword ptr , eax
004158BA 8945 BC mov dword ptr , eax
同上的方法
顺利跑出了界面,,,
总结:程序使用1与0判断是否会员,所以只要我们把值都改为1,那么逆向成功!
那个悬赏贴里我就说过可以通过修改它的返回值为1来完美爆破,毕竟这个验证是作者自己写的 并没有多处校验。 学习学习·· 892644330 发表于 2016-7-21 22:09
那个悬赏贴里我就说过可以通过修改它的返回值为1来完美爆破,毕竟这个验证是作者自己写的 并没有多处校验。
受大神的启发,感谢感谢 谢谢楼主支持 谢谢楼主, too 谢谢楼主大大 支持一下了 感谢楼主分享
感谢楼主分享{:5_117:}