ImageVerifierCode 换一换
格式:DOC , 页数:13 ,大小:92.50KB ,
资源ID:7548513      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7548513.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(Ollydbg破解教学之万能断点篇.doc)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

Ollydbg破解教学之万能断点篇.doc

1、 Ollydbg破解教学之万能断点篇(图) 安全中国 更新时间:2008-9-6 0:30:57 责任编辑:流火 热 点: 终于有一点时间总结一下OD破解的经验,有许多大侠们都认为OD不能下万能断点,可是有些软件的破解需要用到万能断 点,以前一直没有这方面的资料,有的只是OD不能下万能断点的断言,一时心恢之极,可是我原来用TRW和SICE用的挺好,谁知 系统又跟我闹矛盾,一用TRW和SICE就死机,没办法我现在只能用OD,我写的一些破解文章都是用OD破的,反复试验,我终于发 现OD也能下万能断点,在我以前写的一些文章中好象有一篇简单提到过,但没有说的很详细,这

2、次静下心,想写一点东西,送给 我心爱的组织DFCG吧,我的破解是从DFCG组织起步的,很感谢DFCG的高手们的帮助,在此说声谢谢!为了更明确,这次破解所使 用的调试器OD是从看雪论坛临时下载的OD1.09的汉化版,没有使用我自己手头经过改造的OD,在此也感谢看雪论坛,这里真的 有很多高手,在这个论坛我也学到了很多.这次破解的对象是超级XX王,为保护国产软件我隐去了软件相关信息,我不想给自己 带来麻烦,现在工作很忙,能少一点麻烦就尽量少一点吧. 破解作者 yzez[DFCG] 破解工具 ollyd

3、bg1.09汉化版,看雪论坛下载. 破解目的 本不为破解而破解,只因为技术而破解 破解环境 WINDOWS XP,这个我已经在98和XP下各做了两次,贴图和我这篇文章是在XP系统下完成的. 破解过程 1.检查了一下,该程序无壳,C++编译,用W32DSM反汇编一堆乱码,我倒!那就动态调试吧!用ollydbg1.09载入程序,这次我将教 你们如何用OD下万能断点,过程我尽可能详细一点,下面请看.载入程序选OD菜单栏上的插件-----命令行(快捷键是ALT+F1), 在弹出的窗口中输入万能断

4、点命令:bpx hmemcpy,按ENTER键,结果又出现一个对话框: Intermodular calls 00401164 CALL DWORD PTR DS:[<&USER32.GetWindowRect>] USER32.GetWindowRect 0040118F CALL DWORD PTR DS:[<&USER32.GetClientRect>] USER32.GetClientRect 00401279 CALL DWORD PTR DS:[<&USER32.GetClientRect>] USER32.GetClientRect 004013E1

5、CALL DWORD PTR DS:[<&USER32.GetClientRect>] USER32.GetClientRect 0040190A CALL DWORD PTR DS:[<&KERNEL32.GetThreadLocale>] kernel32.GetThreadLocale 0040191C CALL DWORD PTR DS:[<&KERNEL32.GetLocaleInfoA>] kernel32.GetLocaleInfoA 还有很多,我就省略了,在这个框里右键单击,出现一个对话框,选中在每个命令中设置断点(热键是S),单击,你看每一行

6、 都变成了红色吧,这表示全部设下断点了,后面的过程很烦燥,你要一边按F9,边按F2把一些无用的断点去掉,有一点耐心吧, 当然也可以不这样做,但遇到断点跳不过的时候,你就得按F2把这个断点去掉. 感觉在这一点上OD比不上TRW和SICE,到出现注册信息框后,你要输入注册信息,然后按确定,程序被断下来,我的序列号是: GK342QZ0C6RE03L,我输入试验码:123456789098765.程序中断在下面: 00471F71 CALL DWORD PTR DS:[<&USER32.GetWindowTex>****按确定后回到OD程序中断在此,按F8走,在此还没有到关键

7、处! *****************************************************注意这里会循环两次,分别处理序列号和试验码,按F8走 00471F77 LEA ECX,DWORD PTR DS:[EAX+1] 00471F7A PUSH ECX 00471F7B MOV ECX,DWORD PTR SS:[EBP+10] 00471F7E PUSH EAX 00471F7F CALL SuperPIM.0043E15D 00471F84 PUSH EAX

8、 00471F85 PUSH ESI 00471F86 CALL DWORD PTR DS:[<&USER32.GetWindowTex> 00471F8C MOV ECX,DWORD PTR SS:[EBP+10] 00471F8F PUSH -1 00471F91 CALL SuperPIM.00401D6A 00471F96 JMP SHORT SuperPIM.00471FA3 00471F98 MOV EAX,DWORD PTR SS:[EBP+10] 00471F9B PU

9、SH DWORD PTR DS:[EAX] 00471F9D PUSH ESI 00471F9E CALL SuperPIM.00470B61 00471FA4 POP ESI 00471FA5 POP EBP 00471FA6 RETN 0C*************************************程序第二次循环后最后会返回到0040FE99下面看代码: --------------------------

10、 0040FE99 LEA EAX,DWORD PTR SS:[EBP-14]****第二次循环后会返回到这里,注意这就是我们要找的关键地方,按F8往下! 0040FE9C PUSH EAX 0040FE9D CALL SuperPIM.00433D92***********这就是关键CALL,按F7追进,一定要进,因为算法就在这里面! 0040FEA2 POP ECX 0040FEA3 AND DWORD

11、 PTR SS:[EBP-4],0 0040FEA7 LEA ESI,DWORD PTR DS:[EDI+74] 0040FEAA MOV EAX,DWORD PTR DS:[ESI]******试验码入EAX 0040FEAC CMP DWORD PTR DS:[EAX-C],0******比较试验码输入了吗? 0040FEB0 JE SHORT SuperPIM.0040FF2F******没有输入就跳走,一跳就失败! 0040FEB2 PUSH 28 0040FEB4 LEA EAX,DWORD PTR SS:[EBP-18] 0040FEB7

12、PUSH ESI 0040FEB8 PUSH EAX 0040FEB9 CALL SuperPIM.0042CEC8**********此CALL对输入的注册码进行处理,得到一个40位的长字符串,有兴趣自己跟, ******************************************我已是头晕的很,不想跟进! 0040FEBE LEA ECX,DWORD PTR SS:[EBP-14] 0040FEC1 PUSH ECX 0040FEC2 PUSH EAX 0040FEC3 CALL SuperPIM.0040F9B7**********此C

13、ALL对序列号处理,也是得到一个40位的长字符串 0040FEC8 MOV ECX,DWORD PTR SS:[EBP-18] 0040FECB ADD ESP,14 0040FECE ADD ECX,-10 0040FED1 MOV BYTE PTR SS:[EBP-D],AL 0040FED4 CALL SuperPIM.00401B5D**********此CALL进行比较,注册码不对,值为0 0040FED9 CMP BYTE PTR SS:[EBP-D],0*******比较是0吗? 0040FEDD JE SHORT SuperPIM.00

14、40FF2F******相等就跳,跳就失败,所以一定不能跳! 0040FEDF PUSH 0**************************不跳往下你就成功了!下面代码省略! ...............................................................省略若干代码!......................... ===========================================================================================================

15、 ************************************关键CALL的代码!******************************************************* 00433D92 MOV EAX, SuperPIM.0049844E****追进关键CALL后我们来到这里! 00433D97 CALL SuperPIM.00450900 00433D9C PUSH ECX 00433D9D PUSH ECX 00433D9E AND [LOCAL.5], 0 00433DA

16、2 LEA EAX, [LOCAL.5] 00433DA5 PUSH EAX 00433DA6 CALL SuperPIM.00433CA9********此CALL根据电脑硬件信息得到你的序列号,有兴趣跟吧!我是没有兴趣! 00433DAB AND [LOCAL.1], 0 00433DAF PUSH 14 00433DB1 LEA EAX, [LOCAL.5] 00433DB4 PUSH EAX 00433DB5 LEA EAX, [LOCAL.4] 00433DB8 PUSH

17、EAX 00433DB9 CALL SuperPIM.0042CEC8*******算法CALL(1),按F7跟进! 00433DBE PUSH 28 00433DC0 LEA EAX, [LOCAL.4] 00433DC3 PUSH EAX 00433DC4 PUSH [ARG.1] 00433DC7 MOV BYTE PTR SS:[EBP-4], 1 00433DCB CALL SuperPIM.0042CEC8 00433DD0 MOV

18、 ECX, [LOCAL.4] 00433DD3 ADD ESP, 1C 00433DD6 ADD ECX, -10 *****************************省略N行代码!******************************************************** 0043454B RETN ============================================================================================

19、 ***********************************算法CALL!********************************************************* 0042CEC8 MOV EAX, SuperPIM.00497B52********追进算法CALL我们在这里! 0042CECD CALL SuperPIM.00450900 0042CED2 SUB ESP, 14 0042CED5 PUSH EBX 0042CED6 PUSH ESI

20、 0042CED7 XOR EBX, EBX 0042CED9 PUSH EDI 0042CEDA MOV [LOCAL.8], EBX 0042CEDD CALL SuperPIM.004639B5 0042CEE2 MOV EDX, DWORD PTR DS:[EAX] 0042CEE4 MOV ECX, EAX 0042CEE6 CALL DWORD PTR DS:[EDX+C] 0042C

21、EE9 LEA EDI, DWORD PTR DS:[EAX+10] 0042CEEC MOV [LOCAL.4], EDI 0042CEEF MOV EAX, [ARG.2] 0042CEF2 MOV EAX, DWORD PTR DS:[EAX]*******序列号:GK342QZ0C6RE03L移入EAX 0042CEF4 MOV ESI, DWORD PTR DS:[EAX-C]*****序列号的位数15(十六进制值是F)送入ESI 0042CEF7 CMP ESI, EBX****************

22、比较ESI和EBX,ESI的值是F即序列号位数,EBX的初始值是0 0042CEF9 MOV [LOCAL.1], EBX 0042CEFC MOV [LOCAL.8], ESI 0042CEFF JE SuperPIM.0042CFB2*************相等就跳,这里当然不相等,所以就不会跳! 0042CF05 MOV EAX, [ARG.3]******************常数14(十进制值是20)送入EAX 0042CF08 CMP EAX, ESI*****

23、比较EAX和ESI,即14和F比较! 0042CF0A MOV [LOCAL.6], EAX 0042CF0D JG SHORT SuperPIM.0042CF12*******大于就跳! 0042CF0F MOV [LOCAL.6], ESI 0042CF12 CMP [LOCAL.6], EBX****************跳到这里!比较14和0 0042CF15 JLE Su

24、perPIM.0042CFB2*************小于就跳,这里当然不会小!所以不跳! 0042CF1B MOV EAX, EBX**********************0移入EAX 0042CF1D CDQ***********************************EDX清0,准备计算! 0042CF1E IDIV ESI***************************除,EAX/ESI ,EAX的值是0,ESI的值存放序列号的位数F 0042CF20 MOV EAX,

25、 [ARG.2]******************赋EAX地址值 0042CF23 MOV EAX, DWORD PTR DS:[EAX]*******序列号:GK342QZ0C6RE03L移入EAX 0042CF25 PUSH EBX***************************EBX入栈 0042CF26 MOV AL, BYTE PTR DS:[EDX+EAX]*****序列号的第一位G(ASCII码值47)入AL 0042CF29 MOV BYTE PTR SS:[EBP-1C], AL******保存值47 0042

26、CF2C PUSH [LOCAL.7] 0042CF2F CALL SuperPIM.0042CD8E ***************************算法CALL(2)***************************************************** 0042CD8E PUSH EBP 0042CD8F MOV EBP, ESP 0042CD91 PUSH ECX*************************G的ASCII码值47入ECX 0042CD92 MOVZX EAX, BYT

27、E PTR SS:[EBP+8]****扩展成00000047 0042CD96 MOV ECX, [ARG.2]****************赋ECX的初始值为0 0042CD99 MOV [LOCAL.1], EAX 0042CD9C MOV EAX, ECX********************ECX的值移入EAX 0042CD9E IMUL EAX, ECX********************EAX=EAX*ECX=0*0 0042CDA1 LEA EAX, DWORD PTR DS:[EAX+EAX*2+7]

28、EAX+EAX*2+7的值7给EAX 0042CDA5 IMUL EAX, ECX********************EAX=EAX*ECX=7*0 0042CDA8 ADD EAX, 0D*********************EAX=EAX+0D=D 0042CDAB IMUL EAX, ECX********************EAX=EAX*ECX=D*0=0 0042CDAE PUSH ESI*************************序列号位数F入栈! 0042CDAF LEA ESI, DWORD

29、 PTR DS:[ECX+5] 0042CDB2 PUSH ESI 0042CDB3 MOV [ARG.1], EAX 0042CDB6 LEA EAX, [ARG.1] 0042CDB9 PUSH 4 0042CDBB PUSH EAX 0042CDBC CALL SuperPIM.0042CD2E***********这个CALL也在计算,我实在不想跟进! 0042CDC1 PUSH ESI 0042CDC2 LEA EAX, [LOCAL.1] 0042CDC5 PUSH 4

30、 0042CDC7 PUSH EAX 0042CDC8 CALL SuperPIM.0042CD5E**********这个CALL也是计算CALL,烦!不跟了! 0042CDCD MOV EAX, [ARG.1] 0042CDD0 ADD ESP, 18 0042CDD3 XOR EAX, [LOCAL.1]*************这里赋EAX的值38000002 0042CDD6 POP ESI 0042CDD7 LEAVE 0042CDD8

31、 RETN =========================================================================算法CALL(2)结束================== 0042CF34 POP ECX 0042CF35 POP ECX 0042CF36 PUSH 2B***************************常数2B入栈! 0042CF38 XOR EDX,

32、EDX 0042CF3A POP ECX**************************把常数2B赋给ECX 0042CF3B DIV ECX**************************除,EAX/ECX=38000002/2B=014D6535,余数1B入EDX 0042CF3D MOV ECX, EDX*********************结果1B入ECX 0042CF3F ADD CL, 30***********************CL=CL+30=1B+30=4B(对应的字符串是K) 0042CF42

33、CMP CL, 39***********************比较是不是数字9 0042CF45 MOV BYTE PTR SS:[EBP-14], CL*****保存字符串K 0042CF48 JLE SHORT SuperPIM.0042CF55******小于就跳走! 0042CF4A CMP CL, 41***********************比较是不是A 0042CF4D JGE SHORT SuperPIM.0042CF55******大于就跳走 0042CF4F ADD CL, 0F6 0

34、042CF52 MOV BYTE PTR SS:[EBP-14], CL 0042CF55 CMP EBX, [ARG.3]*****************跳到这里!比较0和14 0042CF58 JGE SHORT SuperPIM.0042CF67******大于等于就跳走! 0042CF5A PUSH [LOCAL.5] 0042CF5D LEA ECX, [LOCAL.4] 0042CF60 CALL SuperPIM.00417EAF 0042CF65 J

35、MP SHORT SuperPIM.0042CFA5******无条件跳 0042CF67 MOV EAX, EBX 0042CF69 CDQ 0042CF6A IDIV [ARG.3] 0042CF6D MOVSX ECX, CL 0042CF70 PUSH 2B 0042CF72 MOV ESI, EDX 0042CF74 MOVSX EAX, BYTE PTR DS:[ESI+EDI] 0042CF78 LEA EAX, DWORD PTR DS:[EAX+ECX-60] 0042CF

36、7C CDQ 0042CF7D POP ECX 0042CF7E IDIV ECX 0042CF80 ADD DL, 30 0042CF83 CMP DL, 39 0042CF86 MOV BYTE PTR SS:[EBP-14], DL 0042CF89 JLE SHORT SuperPIM.0042CF96 0042CF8B CMP DL, 41 0042CF8E JGE SHORT SuperPIM.0042CF96

37、0042CF90 ADD DL, 0F6 0042CF93 MOV BYTE PTR SS:[EBP-14], DL 0042CF96 PUSH [LOCAL.5] 0042CF99 LEA ECX, [LOCAL.4] 0042CF9C PUSH ESI 0042CF9D CALL SuperPIM.0042CE4B 0042CFA2 MOV ESI, [LOCAL.8]

38、 0042CFA5 MOV EDI, [LOCAL.4]***************上面跳到这里! 0042CFA8 INC EBX*************************EBX加1 0042CFA9 CMP EBX, [LOCAL.6]**************比较1和14 0042CFAC JL SuperPIM.0042CF1B***********小于就跳,循环,序列号只有15位,这里循环20次,取完后又从第一位取出! *********

39、循环结束后得到的值是:K3L2LPBDW1F2H4B8S0UY这就是我们要的注册码! 0042CFB2 MOV ECX, [ARG.1] 0042CFB5 LEA EAX, [LOCAL.4] 0042CFB8 PUSH EAX 0042CFB9 CALL SuperPIM.00401F36 0042CFBE LEA ECX, DWORD PTR DS:[EDI-10] 0042CFC1 CALL Supe

40、rPIM.00401B5D 0042CFC6 MOV ECX, [LOCAL.3] 0042CFC9 MOV EAX, [ARG.1] 0042CFCC POP EDI 0042CFCD POP ESI 0042CFCE POP EBX 0042CFCF MOV DWORD PTR FS:[0], ECX 0042CFD6 LE

41、AVE 0042CFD7 RETN 写这篇文章的目的是想说明如何在OD下万能断点,算法过程太烦琐,就不想多跟了!希望能对大家有点启发,如果觉得这篇 破文还行帮我顶一下吧!也是希望有更多的人能看到,对更多的人有益,我也是一只菜鸟,请大家多多指点! 我的序列号:GK342QZ0C6RE03L 注册码:K3L2LPBDW1F2H4B8S0UY WinXP 关于POINT-H万能断点 的教程 ________________________________________ 标 题: 【翻译】WinXP 关于POINT-H

42、万能断点 的教程 作 者: nba2005 时 间: 2008-04-01,17:26:46 链 接: WinXP 关于POINT-H万能断点 的教程 【文章标题】: WinXP 关于POINT-H万能断点 的教程 【文章译者】: NBA2005 【作者邮箱】: stockfox1699@ 【作者QQ号】: 382309369 创作《算法分析实战篇和应用篇之提高(一)我的常用断点系统 》,顺手对该文 进行了翻译,前后共三个小时。 原E文地址: by Ricardo Narvaja 作者 Ricardo Narvaja | 邮箱 ricna

43、r22@.ar 时间 :22.Dec.2oo2 内容: 在Windows XP里用OllyDbg 学习使用与WIN98功效相似的万能断点法POINT H。 附件: Crackme v1.0 de Cruehead http://www.darmozjad.host.sk/import.php3 工具: OllyDbg 1.08b 教程正文 摘要 WIN98的万能断点BPX Hmemcpy众所周知。在WinXP系统中,有没有方法在OllyDbg中 再现破解巨星“BPX Hmemcpy”的独特魅力呢?通俗地说,就是:如何在被破解程序读取 你输入的用户

44、名或注册码时断下的方法。本文就是教你如何将上述梦想变成现实。 XP万能断点(俗称point-h)对每台机器的系统是唯一的,可以在USER32.DLL里找到。 这种断点法适用于C++, VB, Delphi, ASM,或其他语言编写的程序。 在我的机器上如何找到这个神奇的point-h? 为了方便解说,我选了一个可以跨系统正常运行且十分简单的CRACK ME 做讲解的例子。 上面的附件里有下载。详细介绍如下: 1.在OD中打开附件下载的CRACK ME。 2.一般的方法:右键--〉查看模块--〉点USER32.DLL,右键--〉查找当前模块中的名称,相当于CTRL+

45、N。 3.寻找Translatemessage,右键--〉条件记录断点。相当于SHIFT+F4。 译者注释:因文中工具OllyDbg 1.08b版本较老,我根据自己的理解和破解体会、试验, 采取了意译。(示范图1)。具体的2.和3.步骤与原文有出入,但易于操作和理解。 示范图2 注释1:在一些系统中,在条件记录断点设置界面,条件项中填:MSG==201; 201这个值有时会失效,到不了XP万能断点。这时我就填入:MSG==202。 表达式填:MSG, 解码表达式的值为:通过表达式假定。 暂停程序选:按条件。 记录表达数值和记录函数参数:都选从不(NEVER)。条

46、件满足次数没提,取默认值零。 4.运行程序。 5.分别输入用户名和注册码: Name : narvaja Serial: 1A2B3C4D5E 示范图3 注释2.当然你可以输入别的用户名和注册码,但 1A2B3C4D5E几乎是唯一的,便于找到确定。 6.按OK按钮。 7.OD会停在条件记录断点处(示范图4)。 示范图4 8.ALT+M打开内存镜像,在内存镜像内右键查找-->在二进制查找中填序列号1A2B3C4D5E(示范图5)。 示范图5 9.点确定开始在内存中搜索1A2B3C4D5E。断下,在找到的字符串上右键选内存访问断点。 示

47、范图6 10.运行(F9),哈哈,OD居然恰恰断在了POINT H处(示范图7)。 示范图7 77D29303 F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS> 这个地方正是我机器上的POINT H。这个CRACK ME 仅仅用来介绍如何找到POINT H。 在以下的例子中,我们将在XP系统中介绍POINT H的具体断法,再现WIN98下万能断点的神奇。 POINT H的具体断法例子: 例1.下面我先用CRACK ME 2举例。步骤如下: 1.在OD中打开CRACK ME 2,输入用户名和序列号,如示范图

48、11: 示范图11 2.在WIN98中,我们会BPX HMEMCPY来设断。然而,在现在的XP中,我们设断:BPX POINT H的值。 由于POINT H实际上位于USER32.DLL里,我们右键查看执行模块-->选USER32(来到USER32区域), CTRL+G 填77D29303 (我的系统的POINT H) ,设内存访问断点(示范图12)。 示范图12 3.回到CRACK ME 2注册界面,按CHECK。 4.OD在POINT H处断下。(示范图13)。 这种断法的原理和WIN98下的HMEMCPY是一样的。第一次的断下动作与用户名有 关(

49、观察寄存器窗口,我们注意到ESI=narjava,正是我们的用户名)。再接着运行(F9), 这次的断下动作与序列号有关(寄存器窗口中,ESI=989898,正是我们的序列号,示范图14)。 示范图14 第一次断下时,很可能程序正在读取用户名;指令反汇编代码 REP MOV [EDI],ESI 说明序列号在 第二次断下时正赋值给EDI。因此,我们在EDI寄存器上右键,选数据窗口中跟随,随后一直按F8直到 序列号载入内存{换句话说,一直按F8直到 call USER32.77D28C15(或你机器上的POINT H值), 图例见示范图15}。在内存窗口中,在假序列号(393839383938)设内存访问断点,最后运行(F9)。 示范图15 OD将断在kernel32.继续运行(F9),直到程序返回crackme2的领空。终于我们发现,我们正好断在 程序对crackme2的注册信息进行判断的过程中。 示范图16 例子2. Idesk是一个UPX加壳的delphi程序。这个壳很容易脱 掉(

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服