美文网首页
《第3期-14 注册表返回值快速定位》学习笔记

《第3期-14 注册表返回值快速定位》学习笔记

作者: 听说我在混吃等死 | 来源:发表于2018-12-27 20:32 被阅读0次

    用作例子的软件是 HyperSnap 7 专业版


    在未注册时,一打开会提示注册,猜测这是从注册表中读取了注册信息,所以可以对注册表操作函数下断点,从而找到验证的关键代码并进行分析修改达到破解的目的。
    一、
    1、来到软件主程序,右键——查找——所有模块间调用


    根据前面的经验,知道注册表函数都以Reg开头,所以可以按键盘上的r e g键,这会自动跳到以Reg开头的函数那里。


    我们要寻找的是打开注册表的函数,找到后右键,对每个调用下断点。
    2、重新载入程序并运行,断下来后观察堆栈窗口中是否会出现和进程名HyperSnap相似的字符串。
    出现后就单步跟踪,还可能得跳出call后继续跟踪。主要是看读取注册信息的代码所在的call返回值是否是0或者1。
    如果出call后发现返回值不是0也不是1,证明这个call就不是关键call,要么继续出call;要么继续F9,找下一个断下来的。这是最要紧最难的一步了,也就是在这一步找到了关键call。
    在第10次断下来后,出call一次还得再出call一次,才找到了关键call。
    在这一过程中,看到可疑的关键处,可以修改一下试试,看能够达到破解目的。

    004A0B5E  |.  E8 2DBA0800   call    0052C590                                  ;  这个就是关键call了。第2次出call会来到这里
    004A0B63  |.  A3 F0B07200   mov     dword ptr ds:[0x72B0F0],eax               ;  关键处,eax的值影响了验证是否通过
    004A0B68  |.  E8 53CD0900   call    0053D8C0
    

    3、原本想直接修改关键call的返回值,但是OD提示重定位的问题


    那么只好对关键call进行替换了

    004A0B5E      B8 01000000                     mov     eax,0x1                                   ;  把关键call替换了
    004A0B63  |.  A3 F0B07200                     mov     dword ptr ds:[0x72B0F0],eax               ;  关键处,eax的值影响了验证是否通过
    004A0B68  |.  E8 53CD0900                     call    0053D8C0
    

    相关文章

      网友评论

          本文标题:《第3期-14 注册表返回值快速定位》学习笔记

          本文链接:https://www.haomeiwen.com/subject/ueidlqtx.html