OllyDbg 使用笔记 (十二)「建议收藏」

OllyDbg 使用笔记 (十二)

大家好,又见面了,我是全栈君。

OllyDbg 使用笔记 (十二)

參考

书:《加密与解密》

视频:小甲鱼 解密系列 视频

演示样例程序下载地址:http://pan.baidu.com/s/1eQiV6aI

安装好程序后,打开程序能够在About中看到注冊界面。能够先从输入的API入手试试。

右键–>查找–>全部模块间的调用,搜索GetWindowTextA (直接输入这些字母就可以搜索),选中找到的的调用,右键–>“在每一个调用到GetWindowTextA设置断点”。  我们能够查看OD设置了3个断点。(我们也能够按Ctrl+N查看输入输出表搜索GetWindowTextA设置断点)。

按F9执行程序,在程序还没有执行到现实接面时。前面两个断点就触发了,并且触发了好多次。

能够知道前面的2个都与About界面的输入无关,取消这两个断点。又一次执行程序。在About中的Registration中输入name和key,点击OK,能够发现程序断在了第3个断点上。

按F8单步执行程序。执行到以下代码处:

00417457   .  8BCE          mov     ecx, esi00417459   .  C64424 30 01  mov     byte ptr [esp+30], 10041745E   .  E8 2D020000   call    0041769000417463   .  84C0          test    al, al00417465   .  75 7C         jnz     short 004174E300417467   .  51            push    ecx00417468   .  8D5424 14     lea     edx, dword ptr [esp+14]0041746C   .  8BCC          mov     ecx, esp0041746E   .  896424 20     mov     dword ptr [esp+20], esp00417472   .  52            push    edx00417473   .  E8 9D6A0400   call    0045DF1500417478   .  51            push    ecx00417479   .  8D4424 1C     lea     eax, dword ptr [esp+1C]0041747D   .  8BCC          mov     ecx, esp0041747F   .  896424 20     mov     dword ptr [esp+20], esp00417483   .  50            push    eax00417484   .  C64424 34 03  mov     byte ptr [esp+34], 300417489   .  E8 876A0400   call    0045DF150041748E   .  8BCE          mov     ecx, esi00417490   .  C64424 30 01  mov     byte ptr [esp+30], 100417495   .  E8 F6010000   call    004176900041749A   .  84C0          test    al, al0041749C   .  75 45         jnz     short 004174E30041749E   .  6A 00         push    0004174A0   .  68 04544800   push    00485404                           ;  ASCII "XoftSpy"004174A5   .  68 C4684800   push    004868C4                           ;  ASCII "Invalid code."004174AA   .  8BCE          mov     ecx, esi004174AC   .  E8 664F0400   call    0045C417004174B1   .  68 48FA4800   push    0048FA48004174B6   .  8BCD          mov     ecx, ebp004174B8   .  E8 206E0400   call    0045E2DD004174BD   .  68 48FA4800   push    0048FA48004174C2   .  8BCF          mov     ecx, edi004174C4   .  E8 146E0400   call    0045E2DD004174C9   .  68 48FA4800   push    0048FA48004174CE   .  8BCB          mov     ecx, ebx004174D0   .  E8 086E0400   call    0045E2DD004174D5   .  6A 00         push    0004174D7   .  8BCE          mov     ecx, esi004174D9   .  E8 03590400   call    0045CDE1004174DE   .  E9 9D000000   jmp     00417580004174E3   >  57            push    edi004174E4   .  55            push    ebp004174E5   .  E8 769D0100   call    00431260004174EA   .  83C4 08       add     esp, 8004174ED   .  8BCE          mov     ecx, esi004174EF   .  6A 00         push    0004174F1   .  68 04544800   push    00485404                           ;  ASCII "XoftSpy"004174F6   .  68 98684800   push    00486898                           ;  ASCII "Congratulations! successfully registered"004174FB   .  E8 174F0400   call    0045C417

我们能够发现 jnz     short 004174E3  非常关键它的跳转决定了后面输出窗体是”Invalid code.” 还是 “Congratulations! successfully registered” 。可是假设我们仅仅是把它改成jmp    short 004174E3 尽管会弹出注冊成功的窗体。但实际上还是没有注冊。我们能够看看它前面的call    00417690。

又一次执行程序,进入00417690。我们能够查看00417690 函数,能够发现这个函数有两处返回。第一处返回前。函数使得al变为1, 第二处返回前,函数使得al变为0。按F8,单步执行程序,改变标志寄存器或者指令使得00417690 函数在第一处retn 返回。可是这样实现了以后依旧是会弹出注冊成功的窗体,但实际上还是没有注冊。

我们能够尝试别的方法进行破解。

冲关键的字符串入手。

我们能够重About界面中的“This XoftSpy license has not been registered” 入手,搜索次字符串,查看代码所在的位置

0040147D   .  50            push    eax0040147E   .  51            push    ecx0040147F   .  C64424 3C 03  mov     byte ptr [esp+3C], 300401484   .  E8 17FF0200   call    004313A000401489   .  8B8E C0000000 mov     ecx, dword ptr [esi+C0]0040148F   .  83C4 08       add     esp, 800401492   .  E8 093C0300   call    004350A000401497   .  84C0          test    al, al00401499   .  74 12         je      short 004014AD0040149B   .  68 C4514800   push    004851C4                           ;  ASCII "This license of XoftSpy has been registered"004014A0   .  8D4C24 08     lea     ecx, dword ptr [esp+8]004014A4   .  E8 34CE0500   call    0045E2DD004014A9   .  6A 00         push    0004014AB   .  EB 10         jmp     short 004014BD004014AD   >  68 94514800   push    00485194                           ;  ASCII "This XoftSpy license has not been registered"004014B2   .  8D4C24 08     lea     ecx, dword ptr [esp+8]

在0040147D处下断点。又一次执行程序。能够发现当按下主界面的Aboutbutton时。就会中断在0040147D处。尝试直接把  je      short 004014AD  改成 nop。能够发现程序就被注冊了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115326.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python执行测试用例_测试用例是由什么组成

    python执行测试用例_测试用例是由什么组成前言通常我们认为每个测试用例都是相互独立的,因此需要保证测试结果不依赖于测试顺序,以不同的顺序运行测试用例,可以得到相同的结果。pytest默认运行用例的顺序是按模块和用例命名的ASCII编码

    2022年7月29日
    7
  • 网页背景音乐设置_网页制作怎么插背景音乐

    网页背景音乐设置_网页制作怎么插背景音乐一、添加背景音乐时,一般会用到两种标签:1、<bgsound>2、<embed>二、一般用法:<bgsoundsrc=”音频源”autostart=”true”loop=”false”/><embedsrc=”音频源”autostart=”true”loop=”false”…

    2022年9月24日
    3
  • 【Spring Boot】使用Spring Boot来搭建Java web项目以及开发过程

    一、SpringBoot简介SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapidapplicationdevelopment)成为领导者。SpringMVC是非常伟大的框架,开源…

    2022年4月13日
    70
  • qq邮箱收到钓鱼邮件_emc邮件门事件该怎么回答

    qq邮箱收到钓鱼邮件_emc邮件门事件该怎么回答0x0背景福无双至、祸不单行。本来是风和日丽的天气,白帽子在工地认真搬砖然后被一些所谓的负(dou)责(bi)人怼了,心里感觉到很委屈。准备下班之际莫名其妙收到了一封QQ邮箱弹窗点开一看直觉就是"这货有毒"。0x1过程新学期课程表安排通知,感觉还是比较有针对性的,想一想自己前段时间加入一些考研群的,目测就是这些群里面的人吧。话不多说,就开启burpsuit看看通信过程。一访…

    2022年8月24日
    6
  • 对于Redis中设置了过期时间的Key,你需要知道这些内容「建议收藏」

    对于Redis中设置了过期时间的Key,你需要知道这些内容

    2022年2月14日
    36
  • 小鹤双拼尝试

    小鹤双拼尝试26个英文字母除了a,o,e,i,u,v(代表ü,下同)之外都被用作声母,而除了这20个声母之外还有3个声母分别为双字母的zh,ch,sh,汉字中绝大部分字的读音都是声母加韵母组成的。而韵母中,除了上述提到的六个字母,其余韵母都是由两个或三个字母组成。小鹤双拼编码方案:第一个字母表示声母,第二字母表示韵母,没有声母时用零声母代替单字母声母韵母键位不变,就意味着26个字母都是和它本来的音相同,比较特殊的就是v,i,u三个(它们也可以拼成yu,yi,wu),当他们被第一个按下时,会代表声母zh,ch,sh

    2022年6月29日
    20

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号