新手破解进阶教程之EXESCOPE之第一篇!
高手略,菜菜菜菜鸟(即只会爆破的)进,中手(?我该怎么叫?)指点一下:)
作者:NONAME SWORDMAN[CPU]
软件:EXESCOPE
版本:6.50
口号:大力支持破解小日本的软件!!!!
软件简介:略
NONAME剑人(不要说贱人……~_~……否则,hihihi~~~)第1篇破解文章
使用软件:C32ASM+OLLYDBG(oll老显示不出来中文字符串资源……怒了!还是用C32ASM辅助一下查查地址吧……)
破解方式:序列号+爆破
目的:1 学习研究 2 练手 3 看不惯小日本
PS:不知道有没有人发过,我是断网写,只有一本学院1-6的精华,不知是否是老黄历,不管了,让新手看看吧
(众人:你不也是吗?我倒~我也在看啊~),互相学习一下
大力感谢:小虾(你的6.41版本是我在最无助的情况下看的,原谅我吧,谁叫这个软件老不升级序列号呢:))
商朝子(教程太好了~不过就是太老了……)
-----------------------我是分割线,只会爆破的,想分析注册码的看---------------------------
呵呵:)其实这还真是我第一次分析序列号的,其实一点也不难,只要去看一点点教程(学院精华5 6的基础知识那里……)
再去看看一些已经破完的注释,差不多就可以连蒙带猜地分析了(必要是看一下先辈们的CREAK笔记……)
------------------------------------------分割线完毕--------------------------------------
步骤: 1 打开C32ASM(其他工具亦可,像W32DASM黄金版之类的,只要别OLL就行,老显示不出来,烦!)
2 点击“查看字符串”(你不知道?晕,去HELP里看吧)
3 找到“无效的ID或名字”,单击下拉菜单,单击那个地址,记下来
4 打开OLLYDBG,打开文件后CTRL+G,输入(应该是004C2B5E吧:)众人:你为什么不早说?我:既然我查了也要让
你们查!沉默3秒……找扁!你真是“贱人”…………我:HIHIHI~~~你完了,不让你看了)
5 OK,我们的故事从这里就开始了
首先往上看看,看到004C2A88,注意,用户名+进来了(注意:不知道的地址可以动态看……怎么动态?我~~~~~吐了88个白沫,您还是回去修炼100年吧……)
正题:可以往上来一点,在004C2A83设断点,注意有的该跟……有的您还是……别像我,跟了一大堆API……
别跟点F8,跟的点F7,乱了F9再来,没用就调试--》重新开始
004C2A7D |. 8B83 F8020000 MOV EAX,DWORD PTR DS:[EBX+2F8]
004C2A83 |. E8 F4F8FAFF CALL eXeScope.0047237C ; 别跟
004C2A88 |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4] ; 用户名加进来(当然是假的喽!)
004C2A8B |. A1 E8FE4C00 MOV EAX,DWORD PTR DS:[4CFEE8]
004C2A90 |. E8 4F1FF4FF CALL eXeScope.004049E4 ; 别跟
004C2A95 |. 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]
004C2A98 |. 8B83 FC020000 MOV EAX,DWORD PTR DS:[EBX+2FC]
004C2A9E |. E8 D9F8FAFF CALL eXeScope.0047237C ; 别跟
004C2AA3 |. 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]
004C2AA6 |. A1 4CFE4C00 MOV EAX,DWORD PTR DS:[4CFE4C] ; 密码加进来(当然也是假的喽!)
004C2AAB |. E8 341FF4FF CALL eXeScope.004049E4
004C2AB0 |. 8B15 4CFE4C00 MOV EDX,DWORD PTR DS:[4CFE4C] ; eXeScope.004D2E58
004C2AB6 |. 8B12 MOV EDX,DWORD PTR DS:[EDX] ; EDX的密码……
004C2AB8 |. A1 54FC4C00 MOV EAX,DWORD PTR DS:[4CFC54]
004C2ABD |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
004C2ABF |. E8 B8940000 CALL eXeScope.004CBF7C ; 跟,F7,最关键->菜鸟笔记:一般在爆破点上面几行都很关键
004C2AC4 |. 84C0 TEST AL,AL ; 同志们,测试!
004C2AC6 |. 0F84 8D000000 JE eXeScope.004C2B59 ; 传说中的爆破点……不过我们不要爆
004C2ACC |. A1 E8FE4C00 MOV EAX,DWORD PTR DS:[4CFEE8] ; 以下就是错误/成功信息了.不管.成功了还有写入文件,麻烦!
004C2AD1 |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
004C2AD3 |. E8 7821F4FF CALL eXeScope.00404C50
004C2AD8 |. 85C0 TEST EAX,EAX
004C2ADA |. 7E 7D JLE SHORT eXeScope.004C2B59
004C2ADC |. 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10]
004C2ADF |. A1 FCFE4C00 MOV EAX,DWORD PTR DS:[4CFEFC]
004C2AE4 |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
004C2AE6 |. E8 11FCFCFF CALL eXeScope.004926FC
004C2AEB |. 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]
004C2AEE |. 8D4D F4 LEA ECX,DWORD PTR SS:[EBP-C]
004C2AF1 |. BA B82B4C00 MOV EDX,eXeScope.004C2BB8 ; ASCII ".ini"
004C2AF6 |. E8 2570F4FF CALL eXeScope.00409B20
004C2AFB |. 8B4D F4 MOV ECX,DWORD PTR SS:[EBP-C]
004C2AFE |. B2 01 MOV DL,1
004C2B00 |. A1 2CBE4300 MOV EAX,DWORD PTR DS:[43BE2C]
004C2B05 |. E8 D293F7FF CALL eXeScope.0043BEDC
004C2B0A |. 8BF0 MOV ESI,EAX
004C2B0C |. A1 E8FE4C00 MOV EAX,DWORD PTR DS:[4CFEE8]
004C2B11 |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
004C2B13 |. 50 PUSH EAX
004C2B14 |. B9 C82B4C00 MOV ECX,eXeScope.004C2BC8 ; ASCII "Name"
004C2B19 |. BA D82B4C00 MOV EDX,eXeScope.004C2BD8 ; ASCII "Reg"
004C2B1E |. 8BC6 MOV EAX,ESI
004C2B20 |. 8B38 MOV EDI,DWORD PTR DS:[EAX]
004C2B22 |. FF57 04 CALL DWORD PTR DS:[EDI+4]
004C2B25 |. A1 4CFE4C00 MOV EAX,DWORD PTR DS:[4CFE4C]
004C2B2A |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
004C2B2C |. 50 PUSH EAX
004C2B2D |. BA D82B4C00 MOV EDX,eXeScope.004C2BD8 ; ASCII "Reg"
004C2B32 |. B9 E42B4C00 MOV ECX,eXeScope.004C2BE4 ; ASCII "ID"
004C2B37 |. 8BC6 MOV EAX,ESI
004C2B39 |. 8B38 MOV EDI,DWORD PTR DS:[EAX]
004C2B3B |. FF57 04 CALL DWORD PTR DS:[EDI+4]
004C2B3E |. 8BC6 MOV EAX,ESI
004C2B40 |. E8 9B10F4FF CALL eXeScope.00403BE0
004C2B45 |. A1 5CFC4C00 MOV EAX,DWORD PTR DS:[4CFC5C]
004C2B4A |. C600 01 MOV BYTE PTR DS:[EAX],1
004C2B4D |. C783 4C020000>MOV DWORD PTR DS:[EBX+24C],1
004C2B57 |. EB 20 JMP SHORT eXeScope.004C2B79
004C2B59 |> 6A 00 PUSH 0
004C2B5B |. 8D55 EC LEA EDX,DWORD PTR SS:[EBP-14]
004C2B5E >|. B8 F02B4C00 MOV EAX,eXeScope.004C2BF0 ; game over hihihi~~~
004C2B63 |. E8 680D0000 CALL eXeScope.004C38D0
004C2B68 |. 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14] ; |
004C2B6B |. 66:8B0D 202C4>MOV CX,WORD PTR DS:[4C2C20] ; |
004C2B72 |. B2 01 MOV DL,1 ; |
004C2B74 |. E8 2F4BF7FF CALL eXeScope.004376A8 ; \eXeScope.004376A8
004C2B79 |> 33C0 XOR EAX,EAX
004C2B7B |. 5A POP EDX
004C2B7C |. 59 POP ECX
004C2B7D |. 59 POP ECX
004C2B7E |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
004C2B81 |. 68 A82B4C00 PUSH eXeScope.004C2BA8
004C2B86 |> 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14]
004C2B89 |. BA 03000000 MOV EDX,3
004C2B8E |. E8 211EF4FF CALL eXeScope.004049B4
004C2B93 |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
004C2B96 |. BA 02000000 MOV EDX,2
004C2B9B |. E8 141EF4FF CALL eXeScope.004049B4
004C2BA0 \. C3 RETN
准备好CALL了吗?LET'S GO!!!!
先说明以下我的计数法:(0A)16=10(10)意思是0A是16进制,在10进制里代表10,“0A.16=10.10”在本文和上解释等值(*OI你别这么写就好,什么?你不知道*OI?NOI知道不?IOI?算了,说了你也不知道,和破解无关但和算法有关的C/PASCAL的考试,可以很负责的告诉你:比较变态!)
004CBF7C /$ 55 PUSH EBP ; 一般来说,刚跟进来的都有初始化,我们还是动跟的好
004CBF7D |. 8BEC MOV EBP,ESP ; 避免出现一些又进API结果屡乱了的事件发生
004CBF7F |. 51 PUSH ECX
004CBF80 |. 53 PUSH EBX
004CBF81 |. 8955 FC MOV DWORD PTR SS:[EBP-4],EDX
004CBF84 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004CBF87 |. E8 B48EF3FF CALL eXeScope.00404E40
004CBF8C |. 33C0 XOR EAX,EAX
004CBF8E |. 55 PUSH EBP
004CBF8F |. 68 1BC04C00 PUSH eXeScope.004CC01B
004CBF94 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
004CBF97 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
004CBF9A |. 33DB XOR EBX,EBX
004CBF9C |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; EAX:FALSE REGCODE(就是试炼码,下同)
004CBF9F |. E8 AC8CF3FF CALL eXeScope.00404C50 ; EAX的位数,至于为什么,自己跟!
004CBFA4 |. 83F8 0A CMP EAX,0A ; 0A(16)=10(10),你的REGCODE不到10位,HIHIHI~~~去见马克思
004CBFA7 |. 75 5C JNZ SHORT eXeScope.004CC005 ; 去见马克思启程
004CBFA9 |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4] ; 取头4个位
004CBFAC |. B8 30C04C00 MOV EAX,eXeScope.004CC030 ; ASCII "A1910"
004CBFB1 |. E8 DE8FF3FF CALL eXeScope.00404F94 ; 比较头4个位是否是A1910
004CBFB6 |. 48 DEC EAX ; EAX=EAX-1
004CBFB7 |. 74 10 JE SHORT eXeScope.004CBFC9 ; 如果已经是A1910就不再取看是否是A1423了
004CBFB9 |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4] ; 取头4个位
004CBFBC |. B8 40C04C00 MOV EAX,eXeScope.004CC040 ; ASCII "A1423"
004CBFC1 |. E8 CE8FF3FF CALL eXeScope.00404F94 ; 比较头4个位是否是A1423
004CBFC6 |. 48 DEC EAX ; eax=eax-1
004CBFC7 |. 75 3C JNZ SHORT eXeScope.004CC005 ; 见马克思!
004CBFC9 |> B8 02000000 MOV EAX,2 ; eax=2
004CBFCE |> 8B55 FC /MOV EDX,DWORD PTR SS:[EBP-4] ; FALSE REGCODE LOAD!
004CBFD1 |. 8A5402 FF |MOV DL,BYTE PTR DS:[EDX+EAX-1] ; 把下一为进入到DL内,因为EAX每次都要INC(见4CBFDF),所以.....
004CBFD5 |. 80FA 30 |CMP DL,30 ; 他的ASC小于30(与下面的相结合,即是否为数字?),跳HIHIHI~~
004CBFD8 |. 72 2B |JB SHORT eXeScope.004CC005 ; HIHIHI~~~~
004CBFDA |. 80FA 39 |CMP DL,39 ; 他的ASC大于39(与上面的相结合,即是否为数字?)
004CBFDD |. 77 26 |JA SHORT eXeScope.004CC005 ; HIHIHI~~~
004CBFDF |. 40 |INC EAX ; 循环指针+1,去见004CBFD1去
004CBFE0 |. 83F8 0B |CMP EAX,0B ; 11.10,判断循环是否结束,因为汇编和BASIC一样,总是到指针+1才OVER
004CBFE3 |.^ 75 E9 \JNZ SHORT eXeScope.004CBFCE ; 没结束的话继续循环!
004CBFE5 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; false regcode load!
004CBFE8 |. 0FB640 08 MOVZX EAX,BYTE PTR DS:[EAX+8] ; 第9位进EAX(笔记:MOVZX是取位……)
004CBFEC |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4] ; false regcode load!
004CBFEF |. 0FB652 09 MOVZX EDX,BYTE PTR DS:[EDX+9] ; 第10位进EDX(笔记:MOVZX是取位……)
004CBFF3 |. 03C2 ADD EAX,EDX ; eax=eax+edx
004CBFF5 |. B9 0A000000 MOV ECX,0A ; ecx=0A.16=10.10
004CBFFA |. 33D2 XOR EDX,EDX ; edx=0
004CBFFC |. F7F1 DIV ECX ; eax=eax / ecx,笔记:无符号除法,整进EAX,余进EDX
004CBFFE |. 83FA 04 CMP EDX,4 ; 余数为4否?
004CC001 |. 75 02 JNZ SHORT eXeScope.004CC005 ; 不是的话,HIHIHIHIHI~~~`~
004CC003 |. B3 01 MOV BL,1 ; BL=1,标志注册成功了,其实这里要是能一进CALL就……就好了
004CC005 |> 33C0 XOR EAX,EAX ; eax=0,这句和以下的为“善后”处理
004CC007 |. 5A POP EDX ; 进
004CC008 |. 59 POP ECX ; 进
004CC009 |. 59 POP ECX ; 进
004CC00A |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
004CC00D |. 68 22C04C00 PUSH eXeScope.004CC022
004CC012 |> 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
004CC015 |. E8 7689F3FF CALL eXeScope.00404990
004CC01A \. C3 RETN ; 回去啦~~
看晕了吗?呵呵:)(比我还菜的菜鸟:你还笑?你还敢笑?你去见马克思吧!我:~555我好不容易整理的笔记~)
笑过,来解释一下, 从CALL的004CBF9C到004CBFC7开始,都是去判断头4个是否是 A1423或A1910,不是去见马克思,不过不知道大家
注意没有,这是一个小型的循环(大型?去见见嵌套的吧……)MOV DL,BYTE PTR DS:[EDX+EAX-1] (004CBFD1)的意思是取下一个,类似于VB里的
(VB QB通用)
FOR I=1 TO 10
X$=MID$(S$,N-I+1,1)
NEXT
不会VB?没关系,我再来耐心解释一下,这相当于从1到10的循环,类似于西格马,(你还不知道西格马?就是那个倒着的E?你该去补补数学了),
我们来先假定一个字符串S$,是"NONAME SWORDMAN",长度是N,就是15(帮我看看数错了吗?),好,上面的意思就是
当I=1时 取出来的东东=S$中的第N-I+1个,就是15-1+1个,是“N”(右面的啊)
当I=2时 取出来的东东=S$中的第N-I+1个,就是15-2+1个,是“A”(右面的啊)
依次类推,到最后就是
“NAMDROWS EMANON”,你再反过来读……倒着的!
对!这句话类似于这个道理,只不过是EDX+EAX-1,我的是N+1-I,意思都差不多,动跟一下就明白了
再来看004CBFD5 CMP DL,30这句,CMP是判断的意思(高手请指正,反正差不多,我是那么理解的),只不过具体的要看下一句要跟的是那种跳转(汇编据统计共32个左右的跳转命令……汗~,知道几个就OK了),转到正题来,这句话是判断DL里面是否和30有什么关系,具体什么关系呢?下一句:JB *******,哦,小于去见马克思啊,下面两句依此类推,是大于39见马克思,什么意思?因为WIN中的0123456789的ASC分别是30 31 32 33 34 35 36 37 38 39 意思是:不是数字见马克思 (你好像还没见过哪个CREAK报告这么详细吧?对!就是给和我差不多的新手看的!我都写晕了,差点写成“是不是数字见马克思”……)
继续, INC EAX,EAX加1,说明循环已经进行过一次了,再一句,CMP EAX,0B ,=11就OUT循环,否则继续(至于为什么是11去见我上面的笔记)
该这句了,004CBFE8 MOVZX EAX,BYTE PTR DS:[EAX+8],意思是去取第9位,为什么自己动跟,实践出真知!(我打错了吗?都晕了,11:00了,明天还考试呢)
以后看见movze就立刻要想到取位……
下面,DIV ECX ,这句是无符号除法(见商朝子教程),eax=eax / ecx,整进EAX,余进EDX
差不多了,再说一个吧,什么是XOR EAX,EAX?呵呵,XOR是一个很厉害的东东,一碰上XOR AAA,AAA 那AAA=0,相当于清0
再罗嗦两句,扩展一下知识
AND 是两串数做“与”运算,只有2进制都是1的时候才=1,例如
1110111010101
0001010111011
结果就是
0000010010001
一般来讲都是10进制化成2进制再与运算,下两个同
OR “或”运算,有一个是1就=1,例如
1111010100001
0001010001010
结果就是
1111010101011
最后“与或”(是吧?)运算,两个一个1,一个0才=1
1111010101000
0010101001010
结果就是
1101111100010
形象一下就是
AND 是你玩电脑,只有你妈你爸都同意了你才能玩
OR 是你玩电脑,只有你妈你爸一个同意了你就能玩
XOR 是你玩电脑,你爸你妈打起来了你就能玩了(汗~)
根据这个你应该明白为什么XOR EAX,EAX=0了吧~
补:
-------------------------------
XOR EAX,EAX
XXXXYYYXYXYXYXYYY
XXXXYYYXYXYXYXYYY
=================
00000000000000000
-------------------------------
汗~写了那么久,真想睡了……
对了,不知道这篇文章该叫什么,就叫“新手破解进阶教程之EXESCOPE吧……”
(各位大虾,以上内容决无抄袭前作…………大虾:你去死吧!代码都是一样的!…………我:无语,这段代码本来就没改过……)
反正你们没我分析透彻就对了
再次说明一下:反对小日本软件入侵!大力弘扬破解日本软件的精神!支持国产软件(这是N多程序员又骂我了:你以后还不是要“研究”我们的程序吗?我汗~)
晕,写得好累,都11:15了,完了,明天的考试……555555555,有错你们大虾帮着改,俺先脚底摸油了,各位新手有什么不懂的问,我和大虾都会解答的(大虾:又把我搀上!我:你不会不解答吧?大虾:看人品。我:…………)
祝同我一样的菜鸟们继续努力:)更上10层楼:)今天就到这里了,88
NONAME SWORDMAN[CPU]
Lake.NONAME DREAM
mail:wangjunyi2008@sina.com
浩方cs:"love usp"or[:=Cabbage=:]Bird No.1
浩方碧雪:仙剑
新浪碧雪:中国仙剑/中国仙剑联盟/
(最后一句话:想知道什么叫做noname swordman[cpu]的CPU是什么意思吗?到联系方式里找找中文,试试翻译成英文,猜对了,下次再写第二个教程的时候有奖!)
(可能到暑假了:()
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!