Rosen 发表于 2014-2-7 20:44

对2013年会计基础考试系统3.0爆破记录

得联系到在吾爱的第一篇新手帖
传送门:http://www.52pojie.cn/thread-236655-1-1.html

之前是采用的笨方法,把所有提示注册前的条件跳改成JMP来绕过
#14楼大大的一句话提醒了我,如果有很多个提示的话,那工作量是很大的


所以有了这篇帖子

直接到关键CALL处下断,来到关键CALL

直接出现真码,但此行的目的是爆破
进入关键CALL,由于不懂算法,所以通过输入真码和假码看关键CALL里跳转的不同来分析
00404788    53            push ebx
00404789    56            push esi
0040478A    57            push edi
0040478B    89C6            mov esi,eax
0040478D    89D7            mov edi,edx
0040478F    39D0            cmp eax,edx
00404791    0F84 8F000000   je ExamNew.00404826                      ; 假码未跳/真码未跳
00404797    85F6            test esi,esi
00404799    74 68         je short ExamNew.00404803                ; 假码未跳/真码未跳
0040479B    85FF            test edi,edi
0040479D    74 6B         je short ExamNew.0040480A                ; 假码未跳/真码未跳
0040479F    8B46 FC         mov eax,dword ptr ds:
004047A2    8B57 FC         mov edx,dword ptr ds:
004047A5    29D0            sub eax,edx
004047A7    77 02         ja short ExamNew.004047AB                ; 假码跳/真码未跳
004047A9    01C2            add edx,eax
004047AB    52            push edx
004047AC    C1EA 02         shr edx,0x2
004047AF    74 26         je short ExamNew.004047D7                ; 假码未跳/真码未跳
004047B1    8B0E            mov ecx,dword ptr ds:
004047B3    8B1F            mov ebx,dword ptr ds:
004047B5    39D9            cmp ecx,ebx
004047B7    75 58         jnz short ExamNew.00404811               ; 假码跳/真码未跳
004047B9    4A            dec edx
004047BA    74 15         je short ExamNew.004047D1                ;    真码未跳
004047BC    8B4E 04         mov ecx,dword ptr ds:
004047BF    8B5F 04         mov ebx,dword ptr ds:
004047C2    39D9            cmp ecx,ebx
004047C4    75 4B         jnz short ExamNew.00404811               ;    真码未跳
004047C6    83C6 08         add esi,0x8
004047C9    83C7 08         add edi,0x8
004047CC    4A            dec edx
004047CD^ 75 E2         jnz short ExamNew.004047B1               ;    真码跳三次
004047CF    EB 06         jmp short ExamNew.004047D7
004047D1    83C6 04         add esi,0x4
004047D4    83C7 04         add edi,0x4
004047D7    5A            pop edx
004047D8    83E2 03         and edx,0x3
004047DB    74 22         je short ExamNew.004047FF                ;    真码跳
004047DD    8B0E            mov ecx,dword ptr ds:
004047DF    8B1F            mov ebx,dword ptr ds:
004047E1    38D9            cmp cl,bl
004047E3    75 41         jnz short ExamNew.00404826
004047E5    4A            dec edx
004047E6    74 17         je short ExamNew.004047FF
004047E8    38FD            cmp ch,bh
004047EA    75 3A         jnz short ExamNew.00404826
004047EC    4A            dec edx
004047ED    74 10         je short ExamNew.004047FF
004047EF    81E3 0000FF00   and ebx,0xFF0000
004047F5    81E1 0000FF00   and ecx,0xFF0000
004047FB    39D9            cmp ecx,ebx
004047FD    75 27         jnz short ExamNew.00404826
004047FF    01C0            add eax,eax
00404801    EB 23         jmp short ExamNew.00404826
00404803    8B57 FC         mov edx,dword ptr ds:
00404806    29D0            sub eax,edx
00404808    EB 1C         jmp short ExamNew.00404826
0040480A    8B46 FC         mov eax,dword ptr ds:
0040480D    29D0            sub eax,edx
0040480F    EB 15         jmp short ExamNew.00404826
00404811    5A            pop edx
00404812    38D9            cmp cl,bl
00404814    75 10         jnz short ExamNew.00404826               ; 假码跳
00404816    38FD            cmp ch,bh
00404818    75 0C         jnz short ExamNew.00404826
0040481A    C1E9 10         shr ecx,0x10
0040481D    C1EB 10         shr ebx,0x10
00404820    38D9            cmp cl,bl
00404822    75 02         jnz short ExamNew.00404826
00404824    38FD            cmp ch,bh
00404826    5F            pop edi
00404827    5E            pop esi
00404828    5B            pop ebx
00404829    C3            retn


取我的机器对应的真码D41D8CD98F00B204E9800998ECF8427E
共32位(感觉有点像MD5)
这一句
004047A5    29D0            sub eax,edx

会通过真假码长度对比判断下面这个跳是否跳
004047A7   /77 02         ja short ExamNew.004047AB                ; 假码跳/真码未跳

而这一句
004047CD ^ 75 E2 jnz short ExamNew.004047B1 ; 真码跳三次
会分三次把我们输入的注册码与真码做对比

那改跳的地方就都出来了
004047A7   /77 02         ja short ExamNew.004047AB                ; ja改为je

004047B7   /75 58         jnz short ExamNew.00404811               ; jnz改为je

004047C4   /75 4B         jnz short ExamNew.00404811               ;    jnz改为je


这样,无论我们输入的注册码长度为多少,都可以注册成功



1354669803 发表于 2014-2-7 21:57

骚年 你有如此领悟能力 恭喜

淡定一生 发表于 2014-2-7 21:57

学习中 ,谢谢分享

wgsls 发表于 2014-2-7 22:19

太强大了,恭贺!

Rosen 发表于 2014-2-7 22:19

1354669803 发表于 2014-2-7 21:57
骚年 你有如此领悟能力 恭喜

谢谢~~

小雨细无声 发表于 2014-2-7 23:08

勤奋啊楼主,学习学习,谢谢。

yao8113231 发表于 2014-3-17 13:03

好多看不懂..会去慢慢消化了{:301_975:}

cui464450064 发表于 2014-3-21 02:24

还是不懂,我只能追踪注册码了。。。。

雪丽美 发表于 2014-5-17 16:21

谢谢,试一下{:1_905:}
页: [1]
查看完整版本: 对2013年会计基础考试系统3.0爆破记录