Ollydbg破解教学之万能断点篇.docx
- 文档编号:5330822
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:16
- 大小:23.68KB
Ollydbg破解教学之万能断点篇.docx
《Ollydbg破解教学之万能断点篇.docx》由会员分享,可在线阅读,更多相关《Ollydbg破解教学之万能断点篇.docx(16页珍藏版)》请在冰豆网上搜索。
Ollydbg破解教学之万能断点篇
Ollydbg破解教学之万能断点篇(图)
安全中国
更新时间:
2008-9-60:
30:
57责任编辑:
流火
热点:
终于有一点时间总结一下OD破解的经验,有许多大侠们都认为OD不能下万能断点,可是有些软件的破解需要用到万能断
点,以前一直没有这方面的资料,有的只是OD不能下万能断点的断言,一时心恢之极,可是我原来用TRW和SICE用的挺好,谁知
系统又跟我闹矛盾,一用TRW和SICE就死机,没办法我现在只能用OD,我写的一些破解文章都是用OD破的,反复试验,我终于发
现OD也能下万能断点,在我以前写的一些文章中好象有一篇简单提到过,但没有说的很详细,这次静下心,想写一点东西,送给
我心爱的组织DFCG吧,我的破解是从DFCG组织起步的,很感谢DFCG的高手们的帮助,在此说声谢谢!
为了更明确,这次破解所使
用的调试器OD是从看雪论坛临时下载的OD1.09的汉化版,没有使用我自己手头经过改造的OD,在此也感谢看雪论坛,这里真的
有很多高手,在这个论坛我也学到了很多.这次破解的对象是超级XX王,为保护国产软件我隐去了软件相关信息,我不想给自己
带来麻烦,现在工作很忙,能少一点麻烦就尽量少一点吧.
破解作者
yzez[DFCG]
破解工具
ollydbg1.09汉化版,看雪论坛下载.
破解目的
本不为破解而破解,只因为技术而破解
破解环境
WINDOWSXP,这个我已经在98和XP下各做了两次,贴图和我这篇文章是在XP系统下完成的.
破解过程
1.检查了一下,该程序无壳,C++编译,用W32DSM反汇编一堆乱码,我倒!
那就动态调试吧!
用ollydbg1.09载入程序,这次我将教
你们如何用OD下万能断点,过程我尽可能详细一点,下面请看.载入程序选OD菜单栏上的插件-----命令行(快捷键是ALT+F1),
在弹出的窗口中输入万能断点命令:
bpxhmemcpy,按ENTER键,结果又出现一个对话框:
Intermodularcalls
00401164CALLDWORDPTRDS:
[<&USER32.GetWindowRect>]USER32.GetWindowRect
0040118FCALLDWORDPTRDS:
[<&USER32.GetClientRect>]USER32.GetClientRect
00401279CALLDWORDPTRDS:
[<&USER32.GetClientRect>]USER32.GetClientRect
004013E1CALLDWORDPTRDS:
[<&USER32.GetClientRect>]USER32.GetClientRect
0040190ACALLDWORDPTRDS:
[<&KERNEL32.GetThreadLocale>]kernel32.GetThreadLocale
0040191CCALLDWORDPTRDS:
[<&KERNEL32.GetLocaleInfoA>]kernel32.GetLocaleInfoA
还有很多,我就省略了,在这个框里右键单击,出现一个对话框,选中在每个命令中设置断点(热键是S),单击,你看每一行
都变成了红色吧,这表示全部设下断点了,后面的过程很烦燥,你要一边按F9,边按F2把一些无用的断点去掉,有一点耐心吧,
当然也可以不这样做,但遇到断点跳不过的时候,你就得按F2把这个断点去掉.
感觉在这一点上OD比不上TRW和SICE,到出现注册信息框后,你要输入注册信息,然后按确定,程序被断下来,我的序列号是:
GK342QZ0C6RE03L,我输入试验码:
123456789098765.程序中断在下面:
00471F71CALLDWORDPTRDS:
[<&USER32.GetWindowTex>****按确定后回到OD程序中断在此,按F8走,在此还没有到关键处!
*****************************************************注意这里会循环两次,分别处理序列号和试验码,按F8走
00471F77LEAECX,DWORDPTRDS:
[EAX+1]
00471F7APUSHECX
00471F7BMOVECX,DWORDPTRSS:
[EBP+10]
00471F7EPUSHEAX
00471F7FCALLSuperPIM.0043E15D
00471F84PUSHEAX
00471F85PUSHESI
00471F86CALLDWORDPTRDS:
[<&USER32.GetWindowTex>
00471F8CMOVECX,DWORDPTRSS:
[EBP+10]
00471F8FPUSH-1
00471F91CALLSuperPIM.00401D6A
00471F96JMPSHORTSuperPIM.00471FA3
00471F98MOVEAX,DWORDPTRSS:
[EBP+10]
00471F9BPUSHDWORDPTRDS:
[EAX]
00471F9DPUSHESI
00471F9ECALLSuperPIM.00470B61
00471FA4POPESI
00471FA5POPEBP
00471FA6RETN0C*************************************程序第二次循环后最后会返回到0040FE99下面看代码:
----------------------------------------------------------------------------------------------------------
0040FE99LEAEAX,DWORDPTRSS:
[EBP-14]****第二次循环后会返回到这里,注意这就是我们要找的关键地方,按F8往下!
0040FE9CPUSHEAX
0040FE9DCALLSuperPIM.00433D92***********这就是关键CALL,按F7追进,一定要进,因为算法就在这里面!
0040FEA2POPECX
0040FEA3ANDDWORDPTRSS:
[EBP-4],0
0040FEA7LEAESI,DWORDPTRDS:
[EDI+74]
0040FEAAMOVEAX,DWORDPTRDS:
[ESI]******试验码入EAX
0040FEACCMPDWORDPTRDS:
[EAX-C],0******比较试验码输入了吗?
0040FEB0JESHORTSuperPIM.0040FF2F******没有输入就跳走,一跳就失败!
0040FEB2PUSH28
0040FEB4LEAEAX,DWORDPTRSS:
[EBP-18]
0040FEB7PUSHESI
0040FEB8PUSHEAX
0040FEB9CALLSuperPIM.0042CEC8**********此CALL对输入的注册码进行处理,得到一个40位的长字符串,有兴趣自己跟,
******************************************我已是头晕的很,不想跟进!
0040FEBELEAECX,DWORDPTRSS:
[EBP-14]
0040FEC1PUSHECX
0040FEC2PUSHEAX
0040FEC3CALLSuperPIM.0040F9B7**********此CALL对序列号处理,也是得到一个40位的长字符串
0040FEC8MOVECX,DWORDPTRSS:
[EBP-18]
0040FECBADDESP,14
0040FECEADDECX,-10
0040FED1MOVBYTEPTRSS:
[EBP-D],AL
0040FED4CALLSuperPIM.00401B5D**********此CALL进行比较,注册码不对,值为0
0040FED9CMPBYTEPTRSS:
[EBP-D],0*******比较是0吗?
0040FEDDJESHORTSuperPIM.0040FF2F******相等就跳,跳就失败,所以一定不能跳!
0040FEDFPUSH0**************************不跳往下你就成功了!
下面代码省略!
...............................................................省略若干代码!
.........................
=============================================================================================================
************************************关键CALL的代码!
*******************************************************
00433D92MOVEAX,SuperPIM.0049844E****追进关键CALL后我们来到这里!
00433D97CALLSuperPIM.00450900
00433D9CPUSHECX
00433D9DPUSHECX
00433D9EAND[LOCAL.5],0
00433DA2LEAEAX,[LOCAL.5]
00433DA5PUSHEAX
00433DA6CALLSuperPIM.00433CA9********此CALL根据电脑硬件信息得到你的序列号,有兴趣跟吧!
我是没有兴趣!
00433DABAND[LOCAL.1],0
00433DAFPUSH14
00433DB1LEAEAX,[LOCAL.5]
00433DB4PUSHEAX
00433DB5LEAEAX,[LOCAL.4]
00433DB8PUSHEAX
00433DB9CALLSuperPIM.0042CEC8*******算法CALL
(1),按F7跟进!
00433DBEPUSH28
00433DC0LEAEAX,[LOCAL.4]
00433DC3PUSHEAX
00433DC4PUSH[ARG.1]
00433DC7MOVBYTEPTRSS:
[EBP-4],1
00433DCBCALLSuperPIM.0042CEC8
00433DD0MOVECX,[LOCAL.4]
00433DD3ADDESP,1C
00433DD6ADDECX,-10
*****************************省略N行代码!
********************************************************
0043454BRETN
===========================================================================================================
***********************************算法CALL!
*********************************************************
0042CEC8MOVEAX,SuperPIM.00497B52********追进算法CALL我们在这里!
0042CECDCALLSuperPIM.00450900
0042CED2SUBESP,14
0042CED5PUSHEBX
0042CED6PUSHESI
0042CED7XOREBX,EBX
0042CED9PUSHEDI
0042CEDAMOV[LOCAL.8],EBX
0042CEDDCALLSuperPIM.004639B5
0042CEE2MOVEDX,DWORDPTRDS:
[EAX]
0042CEE4MOVECX,EAX
0042CEE6CALLDWORDPTRDS:
[EDX+C]
0042CEE9LEAEDI,DWORDPTRDS:
[EAX+10]
0042CEECMOV[LOCAL.4],EDI
0042CEEFMOVEAX,[ARG.2]
0042CEF2MOVEAX,DWORDPTRDS:
[EAX]*******序列号:
GK342QZ0C6RE03L移入EAX
0042CEF4MOVESI,DWORDPTRDS:
[EAX-C]*****序列号的位数15(十六进制值是F)送入ESI
0042CEF7CMPESI,EBX**********************比较ESI和EBX,ESI的值是F即序列号位数,EBX的初始值是0
0042CEF9MOV[LOCAL.1],EBX
0042CEFCMOV[LOCAL.8],ESI
0042CEFFJESuperPIM.0042CFB2*************相等就跳,这里当然不相等,所以就不会跳!
0042CF05MOVEAX,[ARG.3]******************常数14(十进制值是20)送入EAX
0042CF08CMPEAX,ESI**********************比较EAX和ESI,即14和F比较!
0042CF0AMOV[LOCAL.6],EAX
0042CF0DJGSHORTSuperPIM.0042CF12*******大于就跳!
0042CF0FMOV[LOCAL.6],ESI
0042CF12CMP[LOCAL.6],EBX****************跳到这里!
比较14和0
0042CF15JLESuperPIM.0042CFB2*************小于就跳,这里当然不会小!
所以不跳!
0042CF1BMOVEAX,EBX**********************0移入EAX
0042CF1DCDQ***********************************EDX清0,准备计算!
0042CF1EIDIVESI***************************除,EAX/ESI,EAX的值是0,ESI的值存放序列号的位数F
0042CF20MOVEAX,[ARG.2]******************赋EAX地址值
0042CF23MOVEAX,DWORDPTRDS:
[EAX]*******序列号:
GK342QZ0C6RE03L移入EAX
0042CF25PUSHEBX***************************EBX入栈
0042CF26MOVAL,BYTEPTRDS:
[EDX+EAX]*****序列号的第一位G(ASCII码值47)入AL
0042CF29MOVBYTEPTRSS:
[EBP-1C],AL******保存值47
0042CF2CPUSH[LOCAL.7]
0042CF2FCALLSuperPIM.0042CD8E
***************************算法CALL
(2)*****************************************************
0042CD8EPUSHEBP
0042CD8FMOVEBP,ESP
0042CD91PUSHECX*************************G的ASCII码值47入ECX
0042CD92MOVZXEAX,BYTEPTRSS:
[EBP+8]****扩展成00000047
0042CD96MOVECX,[ARG.2]****************赋ECX的初始值为0
0042CD99MOV[LOCAL.1],EAX
0042CD9CMOVEAX,ECX********************ECX的值移入EAX
0042CD9EIMULEAX,ECX********************EAX=EAX*ECX=0*0
0042CDA1LEAEAX,DWORDPTRDS:
[EAX+EAX*2+7]**EAX+EAX*2+7的值7给EAX
0042CDA5IMULEAX,ECX********************EAX=EAX*ECX=7*0
0042CDA8ADDEAX,0D*********************EAX=EAX+0D=D
0042CDABIMULEAX,ECX********************EAX=EAX*ECX=D*0=0
0042CDAEPUSHESI*************************序列号位数F入栈!
0042CDAFLEAESI,DWORDPTRDS:
[ECX+5]
0042CDB2PUSHESI
0042CDB3MOV[ARG.1],EAX
0042CDB6LEAEAX,[ARG.1]
0042CDB9PUSH4
0042CDBBPUSHEAX
0042CDBCCALLSuperPIM.0042CD2E***********这个CALL也在计算,我实在不想跟进!
0042CDC1PUSHESI
0042CDC2LEAEAX,[LOCAL.1]
0042CDC5PUSH4
0042CDC7PUSHEAX
0042CDC8CALLSuperPIM.0042CD5E**********这个CALL也是计算CALL,烦!
不跟了!
0042CDCDMOVEAX,[ARG.1]
0042CDD0ADDESP,18
0042CDD3XOREAX,[LOCAL.1]*************这里赋EAX的值38000002
0042CDD6POPESI
0042CDD7LEAVE
0042CDD8RETN
=========================================================================算法CALL
(2)结束==================
0042CF34POPECX
0042CF35POPECX
0042CF36PUSH2B***************************常数2B入栈!
0042CF38XOREDX,EDX
0042CF3APOPECX**************************把常数2B赋给ECX
0042CF3BDIVECX**************************除,EAX/ECX=38000002/2B=014D6535,余数1B入EDX
0042CF3DMOVECX,EDX*********************结果1B入ECX
0042CF3FADDCL,30***********************CL=CL+30=1B+30=4B(对应的字符串是K)
0042CF42CMPCL,39***********************比较是不是数字9
0042CF45MOVBYTEPTRSS:
[EBP-14],CL*****保存字符串K
0042CF48JLESHORTSuperPIM.0042CF55******小于就跳走!
0042CF4ACMPCL,41***********************比较是不是A
0042CF4DJGESHORTSuperPIM.0042CF55******大于就跳走
0042CF4FADDCL,0F6
0042CF52MOVBYTEPTRSS:
[EBP-14],CL
0042CF55CMPEBX,[ARG.3]*****************跳到这里!
比较0和14
0042CF58JGESHORTSuperPIM.0042CF67******大于等于就跳走!
0042CF5APUSH[LOCAL.5]
0042CF5DLEAECX,[LOCAL.4]
0042CF60CALLSuperPIM.00417EAF
0042CF65JMPSHORTSuperPIM.0042CFA5******无条件跳
0042CF67MOVEAX,EBX
0042CF69CDQ
0042CF6AIDIV[ARG.3]
0042CF6DMOVSXECX,CL
0042CF70PUSH2B
0042CF72MOVESI,EDX
0042CF74MOVSXEAX,BYTEPTRDS:
[ESI+EDI]
0042CF78LEAEAX,DWORDPTRDS:
[EAX+ECX-60]
0042CF7CCDQ
0042CF7DPOPECX
0042CF7EIDIVECX
0042CF80ADDDL,30
0042CF83CMPDL,39
0042CF86MOVBYTEPTRSS:
[EBP-14],DL
0042CF89JLESHORTSuperPIM.0042CF96
0042CF8BCMPDL,41
0042CF8EJGESHORTSuperPIM.0042CF96
0042CF90ADDDL,0F6
0042CF93MOVBYTEPTRSS:
[EBP-14],DL
0042CF96PUSH[LOCAL.5]
0042CF99LEAECX,[LOCAL.4]
0042CF9CPUSHESI
0042CF9DCALLSuperPIM.0042CE4B
0042CFA2MOVESI,[LOCAL.8]
0042CFA5MOVEDI,[LOCAL.4]***************上面跳到这里!
0042CFA8INCEBX*************************EBX加1
0042CFA9CMPEBX,[LOCAL.6]**************比较1和14
0042CFACJ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Ollydbg 破解 教学 万能 断点