吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 14372|回复: 18
收起左侧

[分享] 破解“搜搜问问刷分器”

[复制链接]
llight 发表于 2009-8-30 12:54
本帖最后由 llight 于 2009-8-30 19:06 编辑

【文章标题】: 破解“搜搜问问刷分器”
【文章作者】: Mr.vit
【作者邮箱】: llight@yahoo.cn
【下载地址】: 自己搜索下载
【保护方式】: 壳+网络验证
【使用工具】: OD FastScanner
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  昨天在论坛里看到一位兄弟发了这样一个程序,我也经常去问问的,想赚点分,于是想到了破解
  因为是第一次写破解,写得不好,大家见谅!
  FastScanner查壳如下:VMProtect 1.70.4 -> *Sign by phpbb3
    PEID查不出来,也许是userdb.txt太古老的缘故
    软件是用VB写的
  分两部分,一是追码,二是网络验证(这里感谢mantoou 提出来,中午匆匆破解一下,发现还没有去除网络验证部分,后天去外地工作了,所以忙着准备)
  追码:
  
    首先隐藏一下OD,然后载入程序
    00470585     68 BA7122AE          push AE2271BA
    0047058A     E8 CB080000          call 搜搜问问.00470E5A
    0047058F     88C0                 mov al,al
    00470591     0F9CC0               setl al
    00470594     AC                   lods byte ptr ds:[esi]
    00470595     60                   pushad
    00470596     FEC8                 dec al
    00470598     38DA                 cmp dl,bl
    0047059A     C70424 1C7E3835      mov dword ptr ss:[esp],35387E1C
    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
   
    Shift+F9,这样程序就跑起来了,注册对话框出现,因为是VB程序嘛,所以在OD中下bp rtcMsgBox这个断点
   
    这是我的机器码:EE3C913F66873BF0
    注册码我随便填写:0123456789
    点注册后,程序断在
    7351C5F3 m>  55                   push ebp
    7351C5F4     8BEC                 mov ebp,esp
    7351C5F6     83EC 4C              sub esp,4C
    7351C5F9     8B4D 14              mov ecx,dword ptr ss:[ebp+14]
    7351C5FC     53                   push ebx
    7351C5FD     56                   push esi
    7351C5FE     57                   push edi
    7351C5FF     66:8339 0A           cmp word ptr ds:[ecx],0A
    7351C603     B8 04000280          mov eax,80020004
    。。。。。。。。。。。。。。。。。。。。。。。。。。。。
   
    按ALT+F9,注册错误提示出现了,点确定
    00446282     8D4D BC              lea ecx,dword ptr ss:[ebp-44]
    00446285     6A 10                push 10
    00446287     51                   push ecx
    00446288     FF15 B4104000        call dword ptr ds:[4010B4]                ; msvbvm60.rtcMsgBox
    0044628E     8D55 8C              lea edx,dword ptr ss:[ebp-74]             ; 来了到这里
    00446291     8D45 9C              lea eax,dword ptr ss:[ebp-64]
    00446294     52                   push edx
    。。。。。。。。。。。。。。。。。。。。。。。。。
    一直向上找,找到这一段的段首
    00445FC0     55                   push ebp                                  ; 这就是段首
    00445FC1     8BEC                 mov ebp,esp
    00445FC3     83EC 0C              sub esp,0C
    00445FC6     68 762E4000          push 搜搜问问.00402E76                        ; jmp 到
    00445FCB     64:A1 00000000       mov eax,dword ptr fs:[0]
    00445FD1     50                   push eax
    00445FD2     64:8925 00000000     mov dword ptr fs:[0],esp
    00445FD9     81EC C4000000        sub esp,0C4
    00445FDF     53                   push ebx
    00445FE0     56                   push esi
    00445FE1     57                   push edi
    00445FE2     8965 F4              mov dword ptr ss:[ebp-C],esp
    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    把刚才的rtcMsgBox断点删除,在断首下一个硬件执行断点(右击--断点--设置硬件执行断点)
    然后CTRL+F2,重新载入程序,SHIFT+F9,在出现的对话框中,随便输入出注册码,然后程序就断在刚才设置断点的地方了
   
    00445FC0     55                   push ebp                                  ; 断在这里
    00445FC1     8BEC                 mov ebp,esp
    00445FC3     83EC 0C              sub esp,0C
    00445FC6     68 762E4000          push 搜搜问问.00402E76                    ; jmp 到
    00445FCB     64:A1 00000000       mov eax,dword ptr fs:[0]
    00445FD1     50                   push eax
    00445FD2     64:8925 00000000     mov dword ptr fs:[0],esp
    00445FD9     81EC C4000000        sub esp,0C4
    00445FDF     53                   push ebx
    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    接下来就是F8单步跟踪
    00446224     F7DB                 neg ebx
    00446226     FF15 AC124000        call dword ptr ds:[4012AC]                ; msvbvm60.__vbaFreeStr
    0044622C     8D4D D0              lea ecx,dword ptr ss:[ebp-30]
    0044622F     FF15 A8124000        call dword ptr ds:[4012A8]                ; msvbvm60.__vbaFreeObj
    00446235     66:85DB              test bx,bx
    00446238     74 74                je short 搜搜问问.004462AE                ; 这里的跳一定要实现,不然完蛋
    0044623A     B9 0A000000          mov ecx,0A
    0044623F     B8 04000280          mov eax,80020004
    00446244     894D 8C              mov dword ptr ss:[ebp-74],ecx
    00446247     894D 9C              mov dword ptr ss:[ebp-64],ecx
    0044624A     894D AC              mov dword ptr ss:[ebp-54],ecx
    0044624D     8D95 7CFFFFFF        lea edx,dword ptr ss:[ebp-84]
    00446253     8D4D BC              lea ecx,dword ptr ss:[ebp-44]
    00446256     8945 94              mov dword ptr ss:[ebp-6C],eax
    00446259     8945 A4              mov dword ptr ss:[ebp-5C],eax
    0044625C     8945 B4              mov dword ptr ss:[ebp-4C],eax
    0044625F     C745 84 E8F14000     mov dword ptr ss:[ebp-7C],搜搜问问.0040F1E8
    00446266     C785 7CFFFFFF 080000>mov dword ptr ss:[ebp-84],8
    00446270     FF15 4C124000        call dword ptr ds:[40124C]                ; msvbvm60.__vbaVarDup
    00446276     8D4D 8C              lea ecx,dword ptr ss:[ebp-74]
    00446279     8D55 9C              lea edx,dword ptr ss:[ebp-64]
    0044627C     51                   push ecx
    0044627D     8D45 AC              lea eax,dword ptr ss:[ebp-54]
    00446280     52                   push edx
    00446281     50                   push eax
    00446282     8D4D BC              lea ecx,dword ptr ss:[ebp-44]
    00446285     6A 10                push 10
    00446287     51                   push ecx
    00446288     FF15 B4104000        call dword ptr ds:[4010B4]                ; msvbvm60.rtcMsgBox
    0044628E     8D55 8C              lea edx,dword ptr ss:[ebp-74]             ; 来了到这里
    00446291     8D45 9C              lea eax,dword ptr ss:[ebp-64]
    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    上面的那个跳一定要实现,不然注册错误的提示会出现
    继续单步跟踪
    00446348     FFD7                 call edi
    0044634A     8D55 E4              lea edx,dword ptr ss:[ebp-1C]
    0044634D     52                   push edx
    0044634E     E8 4D2E0000          call 搜搜问问.004491A0
    00446353     8BD0                 mov edx,eax                               ; 这里真正的注册码出现了
    00446355     8D4D E4              lea ecx,dword ptr ss:[ebp-1C]
    00446358     FFD7                 call edi
    0044635A     8B06                 mov eax,dword ptr ds:[esi]
    0044635C     56                   push esi
    0044635D     FF90 0C030000        call dword ptr ds:[eax+30C]
    00446363     8D4D D0              lea ecx,dword ptr ss:[ebp-30]
    00446366     50                   push eax
    00446367     51                   push ecx
    00446368     FF15 AC104000        call dword ptr ds:[4010AC]                ; msvbvm60.__vbaObjSet
    0044636E     8BD8                 mov ebx,eax
    00446370     8D45 D8              lea eax,dword ptr ss:[ebp-28]
    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    我的注册码为:9B5BC5FB22D27D2C
    继续单步,再看看相关的信息
    0044639C     52                   push edx
    0044639D     FF15 FC104000        call dword ptr ds:[4010FC]                ; msvbvm60.__vbaStrCmp
    004463A3     8BD8                 mov ebx,eax
    004463A5     8D4D D8              lea ecx,dword ptr ss:[ebp-28]
    004463A8     F7DB                 neg ebx
    004463AA     1BDB                 sbb ebx,ebx
    004463AC     F7DB                 neg ebx
    004463AE     F7DB                 neg ebx
    004463B0     FF15 AC124000        call dword ptr ds:[4012AC]                ; msvbvm60.__vbaFreeStr
    004463B6     8D4D D0              lea ecx,dword ptr ss:[ebp-30]
    004463B9     FF15 A8124000        call dword ptr ds:[4012A8]                ; msvbvm60.__vbaFreeObj
    004463BF     66:85DB              test bx,bx
    004463C2     74 74                je short 搜搜问问.00446438                ; 这个跳转也让它实现,不然完蛋
    004463C4     B9 0A000000          mov ecx,0A
    004463C9     B8 04000280          mov eax,80020004
    004463CE     894D 8C              mov dword ptr ss:[ebp-74],ecx
    004463D1     894D 9C              mov dword ptr ss:[ebp-64],ecx
    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    继续
    00446494     FF15 8C104000        call dword ptr ds:[40108C]                ; msvbvm60.__vbaHresultCheckObj
    0044649A     8B45 D8              mov eax,dword ptr ss:[ebp-28]
    0044649D     50                   push eax
    0044649E     68 4CC54000          push 搜搜问问.0040C54C                    ; UNICODE "/License.dat"
    004464A3     FF15 74104000        call dword ptr ds:[401074]                ; msvbvm60.__vbaStrCat
    004464A9     8BD0                 mov edx,eax
    004464AB     8D4D D4              lea ecx,dword ptr ss:[ebp-2C]
    004464AE     FFD7                 call edi
    。。。。。。。。。。。。。。。。
    程序会把注册码放在当前目录下的License.dat文件中,到此为止,追码部分也就结束了

  网络验证:
  试了正确的注册码后,提示注册成功,但立即又会有非法用户这样的提示,断开网络后再进行注册,没有非法用户这样的提示,
  表明这是一个网络验证的,下面就来看看是什么样的网络验证
  首先在程序目录下,创建一个License.dat,再把注册码写入到这个文件中,保存。
  用OD载入程序,下断点 bp rtcMsgBox,SHIFT+F9,程序运行后断在此处
  7351C5F3 m>  55                  push ebp            
  7351C5F4     8BEC                mov ebp,esp
  7351C5F6     83EC 4C             sub esp,4C
  7351C5F9     8B4D 14             mov ecx,dword ptr ss:[ebp+14]
  7351C5FC     53                  push ebx
  7351C5FD     56                  push esi
  7351C5FE     57                  push edi
  7351C5FF     66:8339 0A          cmp word ptr ds:[ecx],0A
  7351C603     B8 04000280         mov eax,80020004
  7351C608     0F85 FC000000       jnz msvbvm60.7351C70A
  。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
  
  ALF+F9,程序就会有非法用户这样的提示,点击确定,继续F8跟踪,直到返回到程序领空为止
  0041D0CA     51                  push ecx
  0041D0CB     FF15 B4104000       call dword ptr ds:[4010B4]                ; msvbvm60.rtcMsgBox
  0041D0D1     8D4D D0             lea ecx,dword ptr ss:[ebp-30]             ; 来到这里
  0041D0D4     FF15 AC124000       call dword ptr ds:[4012AC]                ; msvbvm60.__vbaFreeStr
  0041D0DA     8D95 68FFFFFF       lea edx,dword ptr ss:[ebp-98]
  。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
  向上找到程序的段首,把刚才的断点去除,再在段首下一个硬件执行断点
  0041CC60     55                  push ebp                                      ;下硬件执行断点
  0041CC61     8BEC                mov ebp,esp
  0041CC63     83EC 18             sub esp,18
  0041CC66     68 762E4000         push 搜搜问问.00402E76                        ; jmp 到
  0041CC6B     64:A1 00000000      mov eax,dword ptr fs:[0]
  0041CC71     50                  push eax
  0041CC72     64:8925 00000000    mov dword ptr fs:[0],esp
  0041CC79     B8 BC010000         mov eax,1BC
  0041CC7E     E8 ED61FEFF         call 搜搜问问.00402E70                        ; jmp 到
  。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
  接着重新载入程序,注册程序目录下,那个License.dat是否还存在,如果不存在,则要重新构造一个
  Shift+F9,运行程序,来到
  刚才下硬件断点的地方,F8单步
  
  0041CD65     83C4 10             add esp,10
  0041CD68     0FBF85 80FEFFFF     movsx eax,word ptr ss:[ebp-180]
  0041CD6F     85C0                test eax,eax
  0041CD71     0F84 0F0A0000       je 搜搜问问.0041D786                      ; 这个跳转一定要让它实现
  0041CD77     C745 FC 04000000    mov dword ptr ss:[ebp-4],4
  0041CD7E     E8 6DC20200         call 搜搜问问.00448FF0
  0041CD83     8BD0                mov edx,eax
  0041CD85     8D4D D0             lea ecx,dword ptr ss:[ebp-30]
  0041CD88     FF15 74124000       call dword ptr ds:[401274]                ; msvbvm60.__vbaStrMove
  0041CD8E     50                  push eax
  0041CD8F     E8 1CC30200         call 搜搜问问.004490B0
  0041CD94     8BD0                mov edx,eax
  0041CD96     8D4D B0             lea ecx,dword ptr ss:[ebp-50]
  0041CD99     FF15 74124000       call dword ptr ds:[401274]                ; msvbvm60.__vbaStrMove
  0041CD9F     E8 BCC60200         call 搜搜问问.00449460
  0041CDA4     8BD0                mov edx,eax
  0041CDA6     8D4D AC             lea ecx,dword ptr ss:[ebp-54]
  0041CDA9     FF15 74124000       call dword ptr ds:[401274]                ; msvbvm60.__vbaStrMove
  0041CDAF     BA 74BF4000         mov edx,搜搜问问.0040BF74                     ; UNICODE "gb2312"
  0041CDB4     8D4D B4             lea ecx,dword ptr ss:[ebp-4C]
  0041CDB7     FF15 08124000       call dword ptr ds:[401208]                ; msvbvm60.__vbaStrCopy
  0041CDBD     8B4D B0             mov ecx,dword ptr ss:[ebp-50]
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
这一个网络验证是登录时不会再显示非法用户的出错提示了(
那个跳转实现后,再SHIFT+F9运行程序,接着点击问问的载入类别,程序就会断在(因为刚才下过rtcMsgBox这个断点)
7351C5F3 m>  55                  push ebp                                  ; 断在此
7351C5F4     8BEC                mov ebp,esp
7351C5F6     83EC 4C             sub esp,4C
7351C5F9     8B4D 14             mov ecx,dword ptr ss:[ebp+14]
7351C5FC     53                  push ebx
7351C5FD     56                  push esi
7351C5FE     57                  push edi
7351C5FF     66:8339 0A          cmp word ptr ds:[ecx],0A
接着就再ALT+F9,把出现的错误提示点击确定,然后程序返回
0041DD9C     51                  push ecx
0041DD9D     FF15 B4104000       call dword ptr ds:[4010B4]                ; msvbvm60.rtcMsgBox
0041DDA3     8D4D B8             lea ecx,dword ptr ss:[ebp-48]             ; 返回到此
0041DDA6     FF15 AC124000       call dword ptr ds:[4012AC]                ; msvbvm60.__vbaFreeStr
0041DDAC     8D95 50FFFFFF       lea edx,dword ptr ss:[ebp-B0]
。。。。。。。。。。。。。。。。。。
找到程序的段首,下一个硬件执行断点,载入程序,接下来怎么做相信大家都了解了!因为网络验证有多处,用同样的办法
去破解,麻烦了一点,但还是很实用的
破解也到此为止
对于这个软件的网络验证我个人只能一个一个去破解,  希望大家能提供更好的方法!

免费评分

参与人数 1威望 +2 收起 理由
Hmily + 2 感谢发布原创作品,[吾爱破解]因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

mantoou 发表于 2009-8-30 15:50
网络验证那部分有好几处呢,单改一处还是不行哦
vienna 发表于 2009-8-30 13:20
啊!我看见vm直接放弃了。。实在要看看楼主的文章
 楼主| llight 发表于 2009-8-30 16:49
回复3#
刚才中午匆匆破解了一下,现在仔细看了一下,是有问题,网络验证还是没有去除,后天工作了嘛,也没有时间
反正明天有空我再看一下
11212122 发表于 2009-8-30 17:24
额.  看来是我不坚定啊。

楼主不错啊。

至少让我肯定了,带壳破解,比脱壳容易。

VM也不是太可怕。

虽然咱扒不掉,但是照样能搞它。
redrains 发表于 2009-8-31 00:21
学习了,新手也怕网络验证,希望论坛多一点这样的好帖
dz818 发表于 2009-8-31 09:35
楼主能发出来么???
jiaxu826 发表于 2009-9-29 23:46
这个我喜欢
ayayapsb 发表于 2010-8-4 21:26
楼主能发出来么???
xie83544109 发表于 2010-8-4 21:39
[s:365]
学习了,多谢楼主分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 12:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表