频道栏目
首页 > 资讯 > 加密破解 > 正文

汇编破解教程

12-06-05        来源:[db:作者]  
收藏   我要投稿


大家好,我是朽木QQ200655307 今天给大家做个教程 破解外挂的教程

汇编的教程 大家看我的操作吧.
 
现在给希望成为高手的菜鸟们做些高手基础教程。

首先就做破解教程吧。

学会了破解,那些所谓木马免杀就纯粹小菜一碟。

而且能深刻理解计算机的原理和编程实现。

废话不说,就拿看雪的一个程序来做例子。。。

工具准备:

ollydbg

和少许的汇编知识

bad serial,sorry

现在就查找这个

查找文本参考
00401154  |> \6A 30         PUSH 30                                  ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
00401156  |.  68 35304000   PUSH crackme.00403035                    ; |Title = "Crackme 1.0"
0040115B  |.  68 22304000   PUSH crackme.00403022                    ; |Text = "Bad Serial, Sorry!"
00401160  |.  FF35 54304000 PUSH DWORD PTR DS:[403054]               ; |hOwner = NULL
00401166  |.  E8 23000000   CALL <JMP.&USER32.MessageBoxA>           ; \MessageBoxA

显然这里是错误提示,弹出的对话框。

由红色的那条线看到,是由00401135  |. /75 1D         |JNZ SHORT crackme.00401154

跳到错误提示的。
00401122  |.  B9 08000000   MOV ECX,8
00401127  |.  BE 44304000   MOV ESI,crackme.00403044
0040112C  |.  BF 08304000   MOV EDI,crackme.00403008
00401131  |>  8A06          /MOV AL,BYTE PTR DS:[ESI]
00401133  |.  3A07          |CMP AL,BYTE PTR DS:[EDI]
00401135  |.  75 1D         |JNZ SHORT crackme.00401154

显然这里是校验注册码。逐位校验,一共8位(MOV ECX,8),若有一位不同就说明注册码不对了。

现在看看输入的数据保存在哪里?利用getdlgitemtext这个函数做中断
00401099  |.  6A 0A         PUSH 0A                                  ; /Count = A (10.)
0040109B  |.  68 44304000   PUSH crackme.00403044                    ; |Buffer = crackme.00403044
004010A0  |.  68 B80B0000   PUSH 0BB8                                ; |ControlID = BB8 (3000.)
004010A5  |.  FF35 54304000 PUSH DWORD PTR DS:[403054]               ; |hWnd = NULL
004010AB  |.  E8 D2000000   CALL <JMP.&USER32.GetDlgItemTextA>       ; \GetDlgItemTextA

0040109B  |.  68 44304000   PUSH crackme.00403044这个是保存数据的参数 地址是:00403044

004010D0  |.  B9 08000000   MOV ECX,8
004010D5  |.  BE 44304000   MOV ESI,crackme.00403044
004010DA  |>  8036 32       /XOR BYTE PTR DS:[ESI],32
004010DD  |.  46            |INC ESI
004010DE  |.^ E2 FA         \LOOPD SHORT crackme.004010DA
004010E0  |.  BE 44304000   MOV ESI,crackme.00403044
004010E5  |.  B9 04000000   MOV ECX,4
004010EA  |>  8A06          /MOV AL,BYTE PTR DS:[ESI]
004010EC  |.  8A5E 01       |MOV BL,BYTE PTR DS:[ESI+1]
004010EF  |.  32C3          |XOR AL,BL
004010F1  |.  8887 4C304000 |MOV BYTE PTR DS:[EDI+40304C],AL
004010F7  |.  83C6 02       |ADD ESI,2
004010FA  |.  47            |INC EDI
004010FB  |.^ E2 ED         \LOOPD SHORT crackme.004010EA
004010FD  |.  BE 4C304000   MOV ESI,crackme.0040304C
00401102  |.  8A06          MOV AL,BYTE PTR DS:[ESI]
00401104  |.  8A5E 01       MOV BL,BYTE PTR DS:[ESI+1]
00401107  |.  32C3          XOR AL,BL
00401109  |.  8A5E 02       MOV BL,BYTE PTR DS:[ESI+2]
0040110C  |.  8A4E 03       MOV CL,BYTE PTR DS:[ESI+3]
0040110F  |.  32D9          XOR BL,CL

004010DA  |> /8036 32       /XOR BYTE PTR DS:[ESI],32                ;  第一次处理
004010DD  |. |46            |INC ESI
004010DE  |.^\E2 FA         \LOOPD SHORT crackme.004010DA


应该看得懂这几句的意思吧,就是把输入的注册码12345678对应的ascii码31,32,33,34,35,36,37,38分别和32H异或运算
运算后是:3,0,1,6,7,4,5,a


004010E5  |.  B9 04000000   MOV ECX,4
004010EA  |>  8A06          /MOV AL,BYTE PTR DS:[ESI]                ;  第二次处理
004010EC  |.  8A5E 01       |MOV BL,BYTE PTR DS:[ESI+1]
004010EF  |.  32C3          |XOR AL,BL
004010F1  |.  8887 4C304000 |MOV BYTE PTR DS:[EDI+40304C],AL
004010F7  |.  83C6 02       |ADD ESI,2
004010FA  |.  47            |INC EDI
004010FB  |.^ E2 ED         \LOOPD SHORT crackme.004010EA

这里是把与32h异或运算后的结果,每两位异或然后保存在40304c中即8位变4位

004010FD  |.  BE 4C304000   MOV ESI,crackme.0040304C                 ;  第三次处理
00401102  |.  8A06          MOV AL,BYTE PTR DS:[ESI]
00401104  |.  8A5E 01       MOV BL,BYTE PTR DS:[ESI+1]
00401107  |.  32C3          XOR AL,BL
00401109  |.  8A5E 02       MOV BL,BYTE PTR DS:[ESI+2]
0040110C  |.  8A4E 03       MOV CL,BYTE PTR DS:[ESI+3]
0040110F  |.  32D9          XOR BL,CL
00401111  |.  32C3          XOR AL,BL

这里4位变2位

最后变一位保存在al中,最后al的值是8

最后这里00401113  |.  B9 08000000   MOV ECX,8
00401118  |.  BE 44304000   MOV ESI,crackme.00403044
0040111D  |>  3006          /XOR BYTE PTR DS:[ESI],AL
0040111F  |.  46            |INC ESI
00401120  |.^ E2 FB         \LOOPD SHORT crackme.0040111D

是将每一位跟al异或

保存在BYTE PTR DS:[ESI]

数据将变成b,8,9,e,f,c,d,2

总的来讲流程是:
1       原始数据
  与32h异或      31,32,33,34,35,36,37,38
2       异或后8》4,4》2,2》1 保存在al,这个数据时al=8

3   与al异或

生成与注册码用同样方法生成的数据比较,敏合即注册码正确

我们来看看结果00403044这里保存了运算结果,看结果跟我们前面说的一样。b,8,9,e,f,c,d,2

好了我们看看正确的结果是什么?

0040112C  |.  BF 08304000   MOV EDI,crackme.00403008
00403008保存了正确的结果:分别是:71,18,59,1b,79,42,45,4c

那么如何从这些数据得到正确的注册码呢?
对了,就像是数学中类似的反函数了,就是将数据反过来运算一次就能得到原始数据

将71,18,59,1b,79,42,45,4c
进行第二部2       异或后8》4,4》2,2》1 保存在al,此时al为19

将71,18,59,1b,79,42,45,4c 与19异或

将71,18,59,1b,79,42,45,4c与 32异或(注意这里32,19和其他数字都是16进制的)

最后得到 5a,33,72,30,52,69,6e,67
对应ascii:Z,3,r,0,R,i,n,g(Z3r0Ring)

我们试试看。。。。。。。。。。。

破解成功了。
 

 

 


 

相关TAG标签
上一篇:零基础破解软件
下一篇:站群必备:小龙二级域名生成器
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站