首页
社区
课程
招聘
[原创]追追Snooper v1.40.1的注册码.
发表于: 2014-4-17 16:50 5442

[原创]追追Snooper v1.40.1的注册码.

2014-4-17 16:50
5442

【软件名称】Snooperv1.40.1
【下载地址】见附件
【应用平台】Win9x/NT/2000/XP
【软件大小】http://mydown.yesky.com/soft/355/33519355.shtml
【破解声明】破解只是感兴趣,无其它目的。失误之处敬请诸位大侠赐教!
【破解难度】入门新手
【破解工具】OD
【软件简介】Snooper是声音录制软件,使用先进快速的mp3技术,录制一小时只需要不到4mb的空间,还可以自动通过电子邮件来发送完成的录音,功能繁多。
      看看最新的Snooper吧,录音倒是很好,这个相对来说明比较简单的,大牛飘过...;可能写的有点乱,我自己还是看懂了,就拿出来和大家分享一下,不要喷我..
我是把系统时间修改了一下才出现这种情况的。我们当取消,后来发现是-1天了,大概意思是说试用的30天已经结束的意思吧。
       顺利安装上之后,试用运行了一下,发现在我们打开注册框的时候,鼠标图标发生了变化,等了一会儿时间才关闭窗口,我就在想是不是可以用sleep函数处下断点,结果验证了这一点鼠标图标变了,我就想是不是可以用SetCursor来下断点,找关键位置呢。当然可以,下面我们就用这个断点来试试吧。
      思路一:OD载入,下bp SetCursor断点。

0012F130   00489EC8  /CALL 到 SetCursor 来自 snpr.00489EC3

      往上回溯,ALT +F9 运行起来后,我们才发现0050DBF5   .  42 74 6E 4F 4>asciiBtnOKClick"
     原来我们可以搜索 "BtnOKClick" 或者 搜索"BitBtn2Click",看到这个字符串,让我想到了DELPHI,后来一看还真是delphi编写的,特征明显呀。。

0050DC06   .  42 69 74 42 7>ascii "BitBtn2Click"

0050DC19   .  46 6F 72 6D 5>ascii "FormShow"
0050DC21   .  10            db 10
0050DC22   .  54 66 72 6D 5>ascii "TfrmRegistration"

     现在先不管了,咱们就是要不直寻常走!否则,对强检测强加密的就不好使了,我们的思维好活跃一点点嘛。

     到段首下断点0050DC78,输入注册名:DevilMayCry,注册码:0123456随便吧,反正咱们输入的都是假,真的咱们又不知道,点确定,断了下来0050DC78。这里就是我们要找的按钮事件吧。

0050DC78  /.  55            push ebp
0050DC79  |.  8BEC          mov ebp,esp
0050DC7B  |.  33C9          xor ecx,ecx
0050DC7D  |.  51            push ecx
0050DC7E  |.  51            push ecx
0050DC7F  |.  51            push ecx

   半步往下走,到这里就出现我们的注册名,注册码了

0050DCB1  |.  8D55 F8       lea edx,[local.2]
0050DCB4  |.  8B45 FC       mov eax,[local.1]
0050DCB7  |.  8B80 0C030000 mov eax,dword ptr ds:[eax+0x30C]
0050DCBD  |.  E8 8EE1F5FF   call snpr.0046BE50  注册码
0050DCC2  |.  8B45 F8       mov eax,[local.2]
***************
0050DCC5  |.  50            push eax
0050DCC6  |.  8D55 F4       lea edx,[local.3]
0050DCC9  |.  8B45 FC       mov eax,[local.1]
0050DCCC  |.  8B80 00030000 mov eax,dword ptr ds:[eax+0x300]
0050DCD2  |.  E8 79E1F5FF   call snpr.0046BE50  注册名
0050DCD7  |.  8B55 F4       mov edx,[local.3]

   中间这个空行,才发现这两断代码是如此的相似....

0050DCD7  |.  8B55 F4       mov edx,[local.3]
0050DCDA  |.  A1 44395200   mov eax,dword ptr ds:[0x523944]//
0050DCDF  |.  8B00          mov eax,dword ptr ds:[eax]//
0050DCE1  |.  8B80 44040000 mov eax,dword ptr ds:[eax+0x444]//525FF84
0050DCE7  |.  59            pop ecx

     到这里,我们看里面不仅出下神密的地址、假码、用户名,相必要干点什么了吧,下的jnz又跳过了很多代码。比较的是al里面的,我想要到了函数里面去修改起始行mov eax,1,  retn,后来一看还定入注册表了。CALL 004D7020前面的参数在寄存器里面了。

EAX 00C3A008
ECX 00C656C0 ASCII "0123456"
EDX 00C85B14 ASCII "DevilMayCry"
0050DCE8  |.  E8 3393FCFF   call snpr.004D7020   

     进入到004D7020里面去看一看,有下面几个关键的地方
004D7040  |.  8B45 F8       mov eax,[local.2]
004D7043  |.  E8 1CE0F2FF   call snpr.00405064        ;  增加 Ansi 字符串的引用计数
004D7048  |.  33C0          xor eax,eax
004D704A  |.  55            push ebp
004D704B  |.  68 0A714D00   push snpr.004D710A
004D7050  |.  64:FF30       push dword ptr fs:[eax]
004D7053  |.  64:8920       mov dword ptr fs:[eax],esp
004D7056  |.  8D45 F4       lea eax,[local.3]
004D7059  |.  E8 46DBF2FF   call snpr.00404BA4                   ;  清空字符串
004D705E  |.  8D55 F0       lea edx,[local.4]
004D7061  |.  8B45 F8       mov eax,[local.2]
004D7064  |.  E8 071FF3FF   call snpr.00408F70                    ;  转换成大写、
004D7069  |.  8B55 F0       mov edx,[local.4]
004D706C  |.  8D45 F8       lea eax,[local.2]
004D706F  |.  E8 C8DBF2FF   call snpr.00404C3C                    ;  复制 Ansi 字符串
004D7074  |.  68 F4010000   push 0x1F4                            ; /Timeout = 500. ms
004D7079  |.  E8 2A86F3FF   call <jmp.&kernel32.Sleep>            ; \Sleep
004D707E  |.  8D4D F4       lea ecx,[local.3]
004D7081  |.  8B55 FC       mov edx,[local.1]
004D7084  |.  8BC6          mov eax,esi
004D7086  |.  E8 C1070000   call snpr.004D784C                       ;  这里是关键位置
004D708B  |.  68 F4010000   push 0x1F4                               ; /Timeout = 500. ms
004D7090  |.  E8 1386F3FF   call <jmp.&kernel32.Sleep>               ; \Sleep
004D7095  |.  8B45 F8       mov eax,[local.2]           ;假的注册码
004D7098  |.  8B55 F4       mov edx,[local.3]           ;我们的真注册码  
004D709B  |.  E8 20DFF2FF   call snpr.00404FC0                       ;Ansi 字符串比较
004D70A0  |.  75 31         jnz Xsnpr.004D70D3
    可以[local.3]即[ebp-0xc],[local.2]即[ebp-0x8].
$-C      > 00C540A4  ASCII "C0AE8163B56"
$-8      > 00C9DFC0  ASCII "0123456"
$-4      > 00C85B14  ASCII "DevilMayCry"
$ ==>    >/0012F174
       进去之后喃,只发现字符串的,没有明确的其它计算,实质在这之前00C3A008+4A...进行了处理,这一点可以在你的注册表里面得到验证,当然那里还有其它的设置,我已经粘在后面了,这里已经出现在堆栈里面[ebp-c]了。不用去修改004D70A0或者0050DCEF了,它会重启验证的。

0050DCED  |.  84C0          test al,al
0050DCEF  |.  75 67         jnz Xsnpr.0050DD58

      如果不跳走,这下面的就是修改注册版一些设置,比如说把文件框设置成灰色、修改menu菜单、修改注册表的键值,其它功能修改。这个软件从分析上来看只有三层CALL所以还有其它很多种方法去破解它、比如说在程序启动地时候修改注册表。
来看看其它思想吧:1:我们点完确定之后,注册窗体就没了,因此我们还可以设置bp ShowWindow.
      2:按常规的获取文本GetWindowTextA.
      3:中间缓冲时间比较长,可以下bp sleep 
[HKEY_LOCAL_MACHINE\SOFTWARE\Snooper\Info]
"Data"=hex:26,89,e1,07,0b,44,65,76,69,6c,4d,61,79,43,72,79,1d,25,40,00,7c,e9,\
  12,00,08,a0,c2,00,64,00,00,00,04,e7,12,00,d0,17,c1,00,00,00,00,00,00,00,00,\
  00,84,bc,48,00,3c,ef,c7,00,a8,d0,c8,00,98,d0,c8,00,10,00,00,00,ed,24,40,00,\
  74,e7,12,00,16,25,40,00,1d,25,40,00,01,00,00,00,14,11,40,00,28,3f,c2,00,aa,\
  21,40,00,40,e7,12,00,fb,0b,43,30,41,45,38,31,36,33,42,35,36,23,40,00,74,e7,\
  12,00,5c,e7,12,00,00,f0,fd,7f,84,e7,12,00,40,24,80,7c,48,e7,12,00,13,24,80,\
  7c,7c,e9,12,00,08,a0,c2,00,00,00,00,00,14,00,00,00,01,00,00,00,00,00,00,00,\
  00,00,00,00,10,00,00,00,c0,b4,b3,ff,ff,ff,ff,ff,00,00,00,00,5c,e7,12,00,3c,\
  e7,12,00,c5,4b,40,00,a0,e7,12,00,dc,0a,a5,09,0b,4f,31,6f,00,00,c0,c2,53,cc,\
  db,41,fa,83,44,0e,f4,01,00,00
     在这里面有我们的用户名和注册码,重启会验证的。
附件: reg.rar


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 6
支持
分享
最新回复 (1)
雪    币: 229
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
这么快就挤下去了哦...
2014-4-18 08:17
0
游客
登录 | 注册 方可回帖
返回
//