转载--算法分析实战篇和应用篇之提高(一)我的常用断点系统

【文章标题】: 算法分析实战篇和应用篇之提高(一)我的常用断点系统 
【文章作者】: NBA2005
【作者邮箱】: stockfox1699@126.com
【作者QQ号】: 382309369
【软件名称】: 小蜜蜂和check 求解没有任何提示的crackme算法
【下载地址】: http://bbs.pediy.com/showthread.php?t=56420  小蜜蜂
              http://bbs.pediy.com/showthread.php?t=61079  
                 求解没有任何提示的crackme算法
【使用工具】: OD
【作者声明】: 试图对算法分析实战中的破解难点进行尽可能全面的阐述,
              浅薄之处请诸位大侠海涵并赐教!
--------------------------------------------------------------------------------
【详细过程】
     算法分析实战篇和应用篇之提高(一)我的常用断点系统   
  
     首先,我要说明的是:这不是一篇破文,也不是教学。我只是试图对算法分析的破解
  理论进行尽可能全面的阐述。所谓提高只是相对于我的入门篇而言,高手请黑眼睛飘一边。
  汇编基础差的朋友,推荐看大菜一号的破文,对汇编的解释很详细,实在是业余破解者学
  汇编的好文啊。
  
     今日感冒涕流,只好看《神探狄仁杰III》消遣。第一集就让我看到了破绽:朝廷已经准
  确预测到了地震的方位和时间。既然老百性都接到了通知开始疏散,身为押运军垧的房
  将军肯定也接到了通知。如此恶劣的天气,仅需一天就能通过的大漠,又没有兵变和重
  大战事发生,房将军为何冒兵家大忌急于押送呢?更不用提遇险时正规部队的队形毫无
  章法、没有先锋和远哨。只好以一句剧情需要艺术处理来理解了。
  
     学破解就是要善于发现问题,这样才能学得快、学得精。学习破解最好的方法就是批判
  的接受,而不是照单全收。要批判地接受就必须自己先尝试破解,这样才能发现自己的
  不足和弱点,才能扎实地成长。我很欣赏riijj Crackme (1) 的详解里对楼主的注释说不的人:
  
{
  thebutterfly 
  
  
  
  中级会员
  
  资 料:
  注册日期: Jul 2004
  帖子: 422 
  精华: 5
  声望: 10   63  2005-04-25, 20:25     
  
  --------------------------------------------------------------------------------
  楼主提供的破文有一处地方有问题:
  假如a是一个32位的有符号整数,以下的四句(A,B句在破文中出现)
  mov  eax,a
  cdq            //A
  xor  eax,edx   //B
  mov  a,eax
  不是求a的绝对值
  如果是正数,最后结果还是这个数
  如果是负数,结果是这个数取反的结果,例如原来a是-5,执行后a是4
  不过这不影响破解的结果,感谢楼主提供CrackMe和破文! 
  
}

    我在入门篇中对易语言的断点详细阐述。对此,朋友颇有微词。易语言是要扶持,
  我坚持批判地扶持的观点。对红旗UNIX同样如此。
  关注1:对红旗UNIX系统的破解讨论在看雪论坛上很难见到。遗憾啊。
  
     我在入门篇里罗列了一大堆常用的断点方法。但在实际破解中,我最常用的断点方
  法有四种:
  
  1.有提示的用字符串查找。
  2.有提示且字符串查找无效的用F12暂停法。这方法常常用于加密字符串的位置判断上。
  3.无提示的用消息断点法。
  4.无提示且用消息断点无效的用XP万能断点法。

  
  第一种方法最普通了。大家都会。
  
  第二种方法在看雪上很早就流行了。分为快捷版和老实版两个具体形式。对于老实版,
  我就推荐看雪上的文章:出现错误对话框的杀手锏--暂停--初学者适用 BY liyangsj。
  
  快捷版其实在入门篇中已经提过了。我在“第二题是找到硬件序列号。这是一个明码比较
  的题目。”中已经进行了叙述:F12暂停,然后CTRL+F9或ALT+F9,直到错误提示的确定
  之类的按钮有效,点它,继续回到OD CTAL+F9数次,回到主程序里出现提示的CALL下。
  这方法常常用于加密字符串的位置判断上,在汉化中应用很广泛。
  
  我就以Petnt大侠的以彼之道还施彼身的小蜜蜂为例子。
  步骤一:运行小蜜蜂-->填入用户名和假注册码-->确定-->出现错误提示框(或者正确提示框)。
  步骤二:运行OD-->附加小蜜蜂。
  步骤三:F12暂停-->CTRL+F9或ALT+F9,直到错误提示的确定之类的按钮有效,点它。
  步骤四:继续回到OD CTAL+F9数次,回到主程序里出现提示的CALL下。
  步骤五:向上追源到CALL所在函数段的段首(或重要跳转处),设断点。
  
  老实版的我就引用liyangsj的文章,写得很好:

{
  标 题: 出现错误对话框的杀手锏--暂停--初学者适用
  发帖人:liyangsj
  时 间: 2005-08-13 15:54 
  原文链接:http://bbs.pediy.com/showthread.php?threadid=16147 
  
  引用精彩的一段:
  我们再来说一下CALL的调用,调用一个子程序的时候:1、向堆栈中压入下一行程序的
  地址;2.JMP到call的子程序地址处关键是1、在堆栈中压入了下一行程序的地址,其目的
  是为了调用子程序结束后返回用的,如果走到一个CALL的时候我们F7一次跟进后会停在
  所调用的子程序的开头第一个代码处,这时看堆栈的第一行压入了调用时的下一行地址。
  这个也是我们要利用的:我们只要在程序某段的开头第一行代码下断(下面也行,这样
  可以避免不必要的干扰)中断后在堆栈中的第一行“选反汇编中跟踪”就可以返回到上一层
  的调用这里的地方了,回到上一层后,如果发现关键段不是这段,再在此段的开头第一行
  下断,向上找。这样可以一层一层向上找,直到找到最初的调用的CALL,这里就是关键段了!
  当然暂停后用AIT+K也可以看的到(但觉得有时不能准确定位)。
  注释:AIT+K是调用堆栈。
  
}

  有更高要求的朋友可以看看《OD里SHIFT+F4条件断点用法篇》BY pjb:
  
{

  标 题: 【分享】致菜鸟: OD里SHIFT+F4条件断点用法篇
  发帖人:pjb
  时 间: 2005-08-24 20:25 
  原文链接:http://bbs.pediy.com/showthread.php?threadid=16494 
  详细信息: 
  
}
  
       WIN98时代的万能断点法bpx hmemcpy让人怀念。再难断的程序,只要能在WIN98下运行,就可以用万能断点法bpx hmemcpy来设断。我以前每当遇到难断的程序,就产生猜想:能不能在程序读取注册码或用户名的时候断下呢?那就是POINT H,XP下所谓的万能断点。虽然许多文章说它支持WIN2K系统,但我的实践证明对WIN2K的支持率很低。首先,介绍newsearch翻译的好文:
  

{

  标 题: POINT H收集翻译
  发帖人:newsearch
  时 间: 2005-02-05 01:44 
  原文链接:http://bbs.pediy.com/showthread.php?threadid=10833 
  详细信息: 
  
  引用:
    1.  什么是POINT H?
    它是在XP/2K机子上的老的已知的hmemcpy,搜索user32中:F3 A5 8B C8 83 E1 03 F3 A4 E8,
       就是POINT H。 或者搜索8B C1 C1 E9 02 F3 A5 8B C8 83 E1 03 F3 A4 E8。一旦找到,它返回位置地址,也就是说在内存拷贝之前。(实际的操作:F9,在内存中搜索上述字符串)
  
     该模式应该发生在USER32的第一个OX3FFFF。比如:
  
  77D46706 mov eax, ecx 
  77D46708 shr ecx, 2 
  77D4670B repe movsd ; <-- 在该指令上中断 
  77D4670D mov ecx, eax 
  77D4670F and ecx, 3 
  77D46712 repe movsb 
  77D46714 call sub_77D46722
     该段代码显示了内存是在哪里从gui-项被拷贝到提供给用户的缓冲器中。追踪一小段,出现SendMessage和Getwindow×××代码段。
  
  2、在OD或SICE中输入:
    BP “POINT-H的值”或在SICE中用BPX。它类似Win98中的hmemcpy,但工作在XP的80%的程序中(不用于VC++)。但我们可以用一些技巧使它用于所有的程序(也可用于VC++)。当   在程
      序编辑框中输入假的序列号时,程序中断。
  
  3、实际上,输入bpx user32!EcGetText+51可以做到"d edi-ebx"。
  
  4、还有寻找POINT H的另外一个方法:如果有USER32.DLL的符号文件(USER32.PDB或USER32.DBG),
       可以在IDA中打开USER32.DLL,适用PDB插件加载上面的符号,然后可以搜索函数ECGetText。它就是POINT H。该函数是USER32.DLL的内部函数,调用来自EditWndProc(也是一个内部函数)。它实际上是对键盘输入和鼠标按键的一个中断,但是和万能断点插件中POINT H的地方不一致。万能断点插件中的POINT H好像常常不能中断,只有VB5和VB6的能中断。请教大虾们指导一下。 
  
     搜索方法:
    菜单:查看->执行模块->点USER32.DLL,在USER32模块窗口中:右键->搜索->二进制字符,在HEX里输入F3 A5 8B C8 83 E1 03 F3 A4 E8,就可以找到Point-H的位置了。我这XP+SP2 完全可以啊。
  
}

    我就以CRACK ME 论坛上"check 求解没有任何提示的crackme算法"来举例子:
    
  1.用OD运行"check 求解没有任何提示的crackme算法"里的Project1.exe,输入用户名和注册码.
  2.右键选查看->执行模块->点模块'USER32.DLL',来到USER32模块窗口中:右键->搜索->
     二进制字符(CTRL+B),
  3.将"F3 A5 8B C8 83 E1 03 F3 A4 E8"复制到二进制字符里的HEX项.
  4.开始搜索,我的机子是7738352D.记住:这个地址与你的XP系统是一一对应的,是一个恒定值.以
    后你记住就行了.
  5.在77D33528设断,然后再回到注册界面,点check,F9直到断下时寄存器里出现注册码:
     EAX 001487C0 ASCII "1234567879012"
     ECX 0000000D
     EDX 00140608
     EBX 0000000D
     ESP 0012F2D4
     EBP 0012F2E4
     ESI 001487C0 ASCII "1234567879012"
     EDI 00DC66A0
     EIP 77D33528 user32.77D33528
  
  6.在EAX 001487C0或ESI 001487C0上右击,选数据窗口中跟随.
  7.在下面内存中对注册码设访问内存断点,运行程序:
     001487C0  31 32 33 34 35 36 37 38 37 39 30 31 32 00 00 00  1234567879012...
  8.断下后,取消内存访问断点,然后F8单步,以后CTRL+F9返回,直到主程序领空或关键程序段..
  
    CTRL+F9八次,停在0043D170:
  0043D170  |.  8943 0>mov     dword ptr [ebx+C], eax
  0043D173  |>  8B03   mov     eax, dword ptr [ebx]
  0043D175  |.  83F8 0>cmp     eax, 0C    注册码位数必须是0C,证实了算法关键所在
  0043D178  |.  75 1B  jnz     short 0043D195
  此时,堆栈窗口显示:
  0012F5DC  |00DC66B4  ASCII "1234567879012"
  0012F5E0  |00000000
  0012F5E4  ]0012F624
  0012F5E8  |00438C93  返回到 Project1.00438C93 来自 Project1.00439EE8
  0012F5EC  |00DC66B4  ASCII "1234567879012"
  0012F5F0  |00438D2F  返回到 Project1.00438D2F 来自 Project1.00438C88
  0012F5F4  |0012F7A8
  0012F5F8  |0042DC88  Project1.0042DC88
  
  哈哈,直接到了算法关键的程序段。
  
  XP万能断点法同样适用于小蜜蜂。简略步骤:
  1.OD运行小蜜蜂,输入用户名和注册码。
  2.右键转到:77D33528(我机器上的POINT H),设断F2。
  3.回到注册界面,点确定。
  4.F9直到断下时寄存器里出现注册码:
  EAX 0014C5B0 ASCII "123456"
  ECX 00000006
  EDX 00140608
  EBX 00000006
  ESP 0012F4EC
  EBP 0012F4FC
  ESI 0014C5B0 ASCII "123456"
  EDI 00AB3E20
  EIP 77D33528 USER32.77D33528
  
  5.内存设访问断点:
  0014C5B0  31 32 33 34 35 36                                123456
  6.取消访问断点,F8或CTRL+F9返回主程序领空。
  
  我个人的理解:
  1.一定要先输入用户名和注册码,然后在XP万能断点上设断.次序千万不能错.不信你试试.
  2.在访问内存中注册码时断下后,一定要取消内存断点.如果你怕一次不成功,可以空格键禁
     用断点,以后需要时空格键激活.
  3.CTRL+F9返回,直到主程序领空或关键程序段。
  4.对某个单机而言,XP万能断点的值是恒定的。你只要找到一次,拷入记事本中,存为
     XP万能断点.TXT,放在桌面上,方便随时复制。
  5.如果记不住,又出门在外,可以在看雪的工具里下载找的工具。
    对程序理解深的记牢下面的程序代码,用OD修改出来也行。
     mov eax, ecx 
     shr ecx, 2 
     repe movsd ; <-- 在该指令上中断 
     mov ecx, eax 
     and ecx, 3 
     repe movsb 
     call sub_77D46722
  6.“bpx user32!EcGetText+51”的效率太低,不实用。
  7. XP万能断点不适用于WIN2K/NT。
  
    这里再链接一个详细的例子供朋友参照理解:
  
{

  标 题: 利用万能断点找出关键跳转
  作 者: moodsky
  时 间: 2006-12-17 15:35 
  链 接: http://bbs.pediy.com/showthread.php?threadid=36520 
  详细信息: 
  
}

  ............................
  我说过,要批判地接受。很多人都会用,但又有多少人对其机理穷追不舍?问题来
了:XP万能断点的具体机理是什么?CRACK ME作者怎样对抗?

{
newsearch的POINT H收集翻译:
3、实际上,输入bpx user32!EcGetText+51可以做到"d edi-ebx"。

}

我试了下,并不好用,很麻烦。结合我最近详细看的几篇外文,试验总结了一套便捷的
神奇操作(XP 万能断点之父)。相信会引发许多的CRACK ME 的作者对XP 万能断点的思考。具体如下:

1。关闭XP系统所有的前台程序。
2。打开OD,注意看一下窗口选项的“总在最前选项”,一定要使它没有打勾。
3。载入小蜜蜂,运行。小蜜蜂浮在OD前,输入用户名和注册码(9A9B7C6D5E),
    将9A9B7C6D5E复制后,点OD任意位置,回到OD界面。
4。右键查看-->选USER32模块-->再右键查找当前模块中的名称(标签)-->寻找Translatemessage。
5。右键Translatemessage-->选条件记录断点-->
6。在条件记录断点设置界面,填好下面的内容点确定:
  条件项中填:MSG==201;
  201这个值有时会失效,到不了XP万能断点。这时我就填入:MSG==202。
  表达式填:MSG,
  解码表达式的值为:通过表达式假定。
  暂停程序选:按条件。
  记录表达数值和记录函数参数:都选从不(NEVER)。条件满足次数没提,取默认值零。
7。ALT+TAB键切换到小蜜蜂注册界面,点注册。我的XP机器停在:
  77D18BF6 >  8BFF            mov     edi, edi                         ; krnln.100EDB40
  77D18BF8    55              push    ebp
  77D18BF9    8BEC            mov     ebp, esp

8。ALT+M,在出现的内存镜像中,CTAL+B,粘贴入注册码:9A9B7C6D5E,搜索:
0014C5B0  39 41 38 42 37 43 36 44 35 45 00 00 00           9A8B7C6D5E...

9。在上述内存中的注册码设内存访问断点。运行程序,断在:
77D3352D    F3:A5           rep     movs dword ptr es:[edi], dword p>
77D3352F    8BC8            mov     ecx, eax
77D33531    83E1 03         and     ecx, 3
77D33534    F3:A4           rep     movs byte ptr es:[edi], byte ptr>
77D33536    E8 E3FBFFFF     call    77D3311E

10。似真亦幻疑梦中,故国神游添情趣。真神奇啊!!!

     我说过,要批判地接受。问题来了:XP万能断点是不是真的万能?
CRACK ME作者怎样对抗?
  
{

  引用:http://www.37moti.com/article/2007/1...ticle_635.html
  
  并非万能的万能断点 
  2007-12-20 16:22:14  作者:  来源:互联网 
    关于万能断点的历史,应该从Windows98下的hMemcpy算起。它主要
  用于大块的内存复制操作。在Windows2000下没有此函数,这是大家都知道
  的,然而是否果然如此呢?hMemcpy究竟是何方神圣,为什么在Windows98
  能用作万能断点?
  
  小知识:hMemcpy是16 bits windows里的一个函数,全名Huge Memory Copy,
  俗称万能断点,它的操作很简单,只是将内存中的一块数据拷贝到另一个地
  方(Memcpy也有此功能),Win9x系统里很频繁地调用它处理数据。在
  Win NT/2K系统上相关的函数是Memcpy,但在Windows NT/2000中很少再
  调用Memcpy来处理数据了,用此函数设断基本上什么也拦不住。 那么
  Windows 2000/Xp下所谓的万能断点又是什么呢?
  
  下面请和我一起来揭开万能断点神秘面纱,在头文件windowsx..h的1333行宏
  定义如下:“#define hMemcpy MoveMemory”看来还要顺藤摸瓜,摸摸MoveMemory
  的底细。MoveMemory在MAPIWIN.H的141行的宏定义如下:
  “#define MoveMemory(pbDst,pbSrc,cb) MemMove((pbDst),(pbSrc),(cb))”
  该函数看来要退出历史舞台了,大概是为了兼容,所以MS提供了上面的宏定义。
  
  下面我们来看看和万能断点仅仅一个字节之差的一段机器码(选自USER32.DLL)
  77D19999 C1E9 02 SHR ECX,2
  77D1999C F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
  77D1999E 8BC8 MOV ECX,EAX
  77D199A0 83E1 03 AND ECX,3
  77D199A3 F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
  77D199A5 8B5D 0C MOV EBX,DWORD PTR SS:[EBP+C]
  
  下面是万能断点的机器码,注意比较机器码的不同。
  77D33538 8BC1 MOV EAX,ECX
  77D3353A C1E9 02 SHR ECX,2
  从这里开始:
  77D3353D F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
  77D3353F 8BC8 MOV ECX,EAX
  77D33541 83E1 03 AND ECX,3
  77D33544 F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
  77D33546 E8 E3FBFFFF CALL USER32.77D3312E
  
  其中F3:A5是Rep Movs的机器码,无论是Rep Movs 还是Rep Movsd,OllyDbg
  已经给出答案了。
  
  其完整形式是:“REP MOVS DWORD PTR ES:[EDI], DWORD PTR ES:[ESI]”
  黑色标识的小差别导致了最后一句汇编代码的巨大差异,所谓失之毫厘,差之
  前里。万能断点的代码看似为某一个函数作准备:CALL USER32.77D3312E,
  似乎该函数才是幕后主脑。但它好像没有公开,大家如果安装了WINDBG不妨
  看看。另外系统调用该函数非常频繁,下断点之后会不断中断。
  
  下面MemMove一段反汇编代码,对比看看,注意标示的部分:
  004010D8 C1 E9 02 shr ecx,2
  004010DB 83 E2 03 and edx,3
  004010DE 83 F9 08 cmp ecx,8
  004010E1 72 29 jb CopyUnwindUp (0040110c)
  004010E3 F3 A5 Rep Movs dword ptr [edi],dword ptr [esi]
  这是巧合吗?我个人有理由相信,所谓的万能断点确实是Windows用于处理内存
  拷贝和内存移动用的一段机器码。
  
  这里简单说点汇编知识:“Rep Movs dword ptr [edi],dword ptr [esi]”是用ecx作
  计数器,控制循环次数,其中[edi]和[esi]均是内存地址。前后跟踪(回溯)一段
  代码发现该段万能断点由EditWndProc调用,代码如下:
  
  77D32FC1 FF75 10 PUSH DWORD PTR SS:[EBP+10]
  77D32FC4 51 PUSH ECX
  77D32FC5 56 PUSH ESI
  77D32FC6 E8 0C000000 CALL USER32.EditWndProc
  77D32FCB 5F POP EDI; 0012EFF4
  77D32FCC 5E POP ESI
  77D32FCD 5B POP EBX
  77D32FCE 5D POP EBP
  在MSDN里查不到该函数的信息,看来是一个内部函数(未文档化)。从名字上看,
  应该是处理窗口Edit框的。不过在OllyDbg中可以直接用该函数名下断点,从现在的
  分析来看,似乎万能断点只能用于窗口过程,换个控制台的程序试试看。
  
  #include <windows.h>
  #include <stdio.h>
  #define SIZE 20
  int main(int argc, char* argv[])
  {
  char regCode[SIZE];
  printf("please in put regCode: ");
  scanf("%s", regCode);
  if (0 == strcmp(regCode, "ngaut"))
  {
  printf("/nright/n");
  }
  else
  {
  printf("wrong/n");
  }
  return 0;
  }
  编译成Release版,用OllyDbg加载,右键单击汇编区域。果然有发现,该程序竟
  然没用USER32.DLL模块,只有Kernel32和ntdll模块。这就验证了我的推
  断(icefire:多么聪明的头脑,值得学习)。我们不妨进一步研究,看
  看Kernel32和ntdll模块是否也有万能断点,用同样的操作方法发现Kernel32和ntdll模
  块也有“万能断点”,但是该万能断点并不能中断,只是虚有其表,无论是控制台程
  序还是GUI程序。现在大家应该明白了吧?所谓的万能断点并非万能,它仅仅能处理
  GUI程序中和EDIT相关的内存移动或者内存复制。 {tag_点击标签样式三} 
  
  英文原文如下:
  
  HMEMCPY o POINT H in XP for OLLYDBG 
  
  --------------------------------------------------------------------------------
  "Cannot start communications services" error after upgrading to Windows XP
  CESD-C-0013
  Applies To:
  Windows CE 1.0, 1.01 
  
  --------------------------------------------------------------------------------
  
  Overview:
  After upgrading your Host PC Operating System to Windows 2000 or XP from 
  Windows 95, 98 or Millennium you receive the following error when you attempt 
  to synchronise your Windows CE 1.0 based Handheld PC
  
  Cannot start communications services.
  A critical resource file cannot be found (pegdcc.dll). To correct this problem you
   must reinstall H/PC Explorer.
  At which point H/PC Explorer will exit and your device synchronisation will not complete.
  
  
  
  --------------------------------------------------------------------------------
  
  Resolution:
  The use of Windows CE 1.0x devices with Windows XP or Windows 2000 is not advisable.
   Users will be required to follow the HPC:Factor connection guides available in the support 
  section to ultimately establish a successful connection between host and device.
  
  The issue with pegdcc.dll exists because of the installation method for H/PC Explorer 1.0 or
   1.1. The application was installed using the Windows 9x install method, rather than the 
  Windows NT install method. This results in H/PC Explorer being unable to connect to the
   Windows XP or 2000 serial network driver.
  There are several possible work arounds.
  
  Upgrade to H/PC Explorer 1.1
  If you are still using H/PC Explorer 1.0 please upgrade to H/PC Explorer 1.1 following the
   installation instructions outlined in the Windows 2000 / XP installation guides.
  
  Reregister the DLL
  In Windows 2000 / XP disconnect your device and completely exit H/PC Explorer 
  Click Start 
  Select Run (If you do not see the Run command in Windows XP please consult XP help) 
  Type cmd and click Ok 
  Type cd c:/program files/Handheld PC Explorer and press enter 
  Type regsvr32 pegdcc.dll 
  Click Ok to the message prompt 
  Reboot your computer 
  Remove H/PC Explorer completely
  Create a backup of your computer and personal data 
  Disconnect your Handheld PC and exit H/PC Explorer 
  Click Start 
  Select Run (If you do not see the Run command in Windows XP please consult XP help) 
  Type CD c:/program files/Handheld PC Explorer and press enter 
  Type each of the following lines, pressing enter after each one:
  regsvr32 2bp.dll /u
  regsvr32 fnt.dll /u
  regsvr32 hhriched.dll /u
  regsvr32 minshell.dll /u
  regsvr32 mrra.dll /u
  regsvr32 outstore.dll /u
  regsvr32 pegconv.dll /u
  regsvr32 pegdcc.dll /u
  regsvr32 prm.dll /u
  regsvr32 pwdcnv.dll /u
  regsvr32 pwdww6.dll /u
  regsvr32 pxlcnv.dll /u
  regsvr32 replui.dll /u
  regsvr32 scdstore.dll /u
  regsvr32 sserver.dll /u
  regsvr32 stm.dll /u 
  From Add or Remove Programs in the Windows control panel remove H/PC Explorer from your computer 
  Reboot your computer 
  Using Windows Explorer navigate to c:/program files/ 
  Manually delete the folder named Handheld PC Explorer 
  Reinstall H/PC Explorer as per the Windows 2000 / XP H/PC Explorer installation guides 
  
  --------------------------------------------------------------------------------
  
  See Also:
  Overview of H/PC Explorer Support - CESD-S-0014
  
}

--------------------------------------------------------------------------------
【经验总结】
  我最常用的断点方法有四种:
  
  1.有提示的用字符串查找。
  2.有提示且字符串查找无效的用F12暂停法。这方法常常用于加密字符串的位置判断上。
  3.无提示的用消息断点法。
  4.无提示且用消息断点无效的用XP万能断点法。
  
  POINT-H的值:
       搜索user32中:F3 A5 8B C8 83 E1 03 F3 A4 E8,
       就是POINT H。 或者搜索8B C1 C1 E9 02 F3 A5 8B C8 83 E1 03 F3 A4 E8。一旦找到,它返回
       位置地址,也就是说在内存拷贝之前。(实际的操作:F9,在内存中搜索上述字符串)
  
  搜索方法:
    菜单:查看->执行模块->点USER32.DLL,在USER32模块窗口中:右键->搜索->二进制字符,
  在HEX里输入F3 A5 8B C8 83 E1 03 F3 A4 E8,就可以找到Point-H的位置了。
  
  记住:这个地址与你的XP系统是一一对应的,是一个恒定值.以
     后你记住就行了.
  对某个单机而言,XP万能断点的值是恒定的。你只要找到一次,拷入记事本中,存为
     XP万能断点.TXT,放在桌面上,方便随时复制。
  
  XP 万能断点之父的神奇操作步骤

  并非万能的万能断点 
  所谓的万能断点并非万能,它仅仅能处理
  GUI程序中和EDIT相关的内存移动或者内存复制。
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值