llight 发表于 2009-9-9 13:59

"流星网络电视"简单破解

本帖最后由 llight 于 2009-9-9 14:10 编辑

【文章标题】: "流星网络电视"简单破解
【文章作者】: Mr.vit
【下载地址】: 自己搜索下载
【加壳方式】: ASPack v2.12
【编写语言】: Delphi
【使用工具】: FastScanner OD
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
首先用FastScanner查一下壳,ASPack v2.12 -> Alexey Solodovnikov
脱壳很简单,可以用脱壳工具,也可以用OD
用OD载入
005A7001 M>60                   pushad
005A7002   E8 03000000          call MeteorNe.005A700A                ; hr esp
005A7007   - E9 EB045D45          jmp 45B774F7
005A700C   55                   push ebp
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
用ESP定律
005A73B0    /75 08                jnz short MeteorNe.005A73BA
005A73B2    |B8 01000000          mov eax,1
005A73B7    |C2 0C00            retn 0C
005A73BA    \68 6CF95100          push MeteorNe.0051F96C                ; 程序入口点
005A73BF   C3                   retn                                  ; 返回
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
F8单步,就到入口点了,然后脱一下壳就可以了
现在进行破解,软件是重启验证的,但是破解起来还是简单的

打开软件,当你填入用户名与注册码的时候,点击注册,这时候会出现两种情况
1.点注册没有反应
2.点注册后就把马上关闭软件
这主要是输入的注册码是有位数规定的,输入注册码的时候,先输入一位,再点注册,没有反应,再输入两位,再点注册
直到输入关闭为止(在没有分析软件之前,这是不一个不错的方法)
直到输入十六位的时候,软件才会关闭
现在用OD载入软件,查一下字符,看看有没有用的信息
00517F46   mov edx,Unpack.0051831C                   nmmd-sgpj
00517F4B   mov eax,Unpack.00518330                   [标准版]
00517FE1   mov edx,Unpack.00518308                   impressions
0051800A   mov edx,Unpack.0051831C                   nmmd-sgpj
0051800F   mov eax,Unpack.00518344                  
005180C4   mov edx,Unpack.00518308                   impressions
005180ED   mov edx,Unpack.0051831C                   nmmd-sgpj
005180F2   mov eax,Unpack.00518354                   [钻石版]
00518134   mov edx,Unpack.00518368                   sgpj-nmmd
找到了吧?嘿嘿,点击钻石版吧,这个是最高级别的
这样就来了
005180DB   E8 74CDEEFF          call Unpack.00404E54
005180E0   C705 60925200 030000>mov dword ptr ds:,3
005180EA   8D4D F8            lea ecx,dword ptr ss:
005180ED   BA 1C835100          mov edx,Unpack.0051831C               ; nmmd-sgpj
005180F2   B8 54835100          mov eax,Unpack.00518354               ; [钻石版]
005180F7   E8 4001F6FF          call Unpack.0047823C
005180FC   8D85 70FFFFFF      lea eax,dword ptr ss:

再向上看看

00517E2F   83E8 0A            sub eax,0A                            ;这里下个断点
00517E32   74 62                je short Unpack.00517E96            ; 跳向标准版
00517E34   83E8 02            sub eax,2
00517E37   74 17                je short Unpack.00517E50
00517E39   83E8 02            sub eax,2
00517E3C   0F84 18010000      je Unpack.00517F5A                  ; 跳向VIP版
00517E42   83E8 02            sub eax,2
00517E45   0F84 D3010000      je Unpack.0051801E                  ; 跳向钻石版
00517E4B   E9 A5030000          jmp Unpack.005181F5
00517E50   68 58925200          push Unpack.00529258
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
00517F34   E8 1BCFEEFF          call Unpack.00404E54
00517F39   C705 60925200 010000>mov dword ptr ds:,1
00517F43   8D4D F8            lea ecx,dword ptr ss:
00517F46   BA 1C835100          mov edx,Unpack.0051831C               ; nmmd-sgpj
00517F4B   B8 30835100          mov eax,Unpack.00518330               ; [标准版]
00517F50   E8 E702F6FF          call Unpack.0047823C
00517F55   E9 A2010000          jmp Unpack.005180FC
00517F5A   68 58925200          push Unpack.00529258
00517F5F   8D45 A8            lea eax,dword ptr ss:
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
00517FF8   E8 57CEEEFF          call Unpack.00404E54
00517FFD   C705 60925200 020000>mov dword ptr ds:,2
00518007   8D4D F8            lea ecx,dword ptr ss:
0051800A   BA 1C835100          mov edx,Unpack.0051831C               ; nmmd-sgpj
0051800F   B8 44835100          mov eax,Unpack.00518344               ;
00518014   E8 2302F6FF          call Unpack.0047823C
00518019   E9 DE000000          jmp Unpack.005180FC
0051801E   68 58925200          push Unpack.00529258
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
005180E0   C705 60925200 030000>mov dword ptr ds:,3
005180EA   8D4D F8            lea ecx,dword ptr ss:
005180ED   BA 1C835100          mov edx,Unpack.0051831C               ; nmmd-sgpj
005180F2   B8 54835100          mov eax,Unpack.00518354               ; [钻石版]
005180F7   E8 4001F6FF          call Unpack.0047823C
005180FC   8D85 70FFFFFF      lea eax,dword ptr ss:

看到了吧,上面很多跳,跳向不同的版本,那么就在00517E2F下一个断点
然后运行程序,断下来了,这时候看一下寄存器当中EAX的值为十六进制的A即为10
执行 sub eax,0A(相当于eax=eax-10)后,eax的值为零,这样je就实现了跳转
这里讲一下JE指令
跳转条件为上一表达式的计算结果为零,或者比较的两个数相等,标志位为ZF=1

这样程序就会跳向标准版,但是我们要实现的是跳向钻石版,所以有两种方法可以改
一种是NOP掉JE指令
一种是输入二十四位的注册码(分析得来的,可以根据几个SUB指令与观察EAX的值)
还是关闭OD,打开程序,输入用户名与二十四位的注册码
接着再用OD载入程序
运行程序,断到
00517E2F   83E8 0A            sub eax,0A                            ;这里下个断点
00517E32   74 62                je short Unpack.00517E96            ; 跳向标准版
00517E34   83E8 02            sub eax,2
00517E37   74 17                je short Unpack.00517E50
00517E39   83E8 02            sub eax,2
00517E3C   0F84 18010000      je Unpack.00517F5A                  ; 跳向VIP版
00517E42   83E8 02            sub eax,2
00517E45   0F84 D3010000      je Unpack.0051801E                  ; 跳向钻石版这里就实现了
00517E4B   E9 A5030000          jmp Unpack.005181F5
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
可以看一下EAX的值为十六进制的10,即十进制的16
接下来单步跟踪
00518034   E8 1BCEEEFF          call Unpack.00404E54
00518039   FF75 8C            push dword ptr ss:
0051803C   8D45 88            lea eax,dword ptr ss:         ; 这里开始注意堆栈窗口了
0051803F   50                   push eax                              ;堆栈会出现一段段数字与字母
00518040   B9 07000000          mov ecx,7                           ;连接一下就是注册码了,刚好24位
00518045   BA 12000000          mov edx,12
0051804A   8B45 FC            mov eax,dword ptr ss:
0051804D   E8 02CEEEFF          call Unpack.00404E54
00518052   FF75 88            push dword ptr ss:
00518055   8D45 84            lea eax,dword ptr ss:
00518058   50                   push eax
00518059   B9 03000000          mov ecx,3
0051805E   BA 03000000          mov edx,3
00518063   8B45 FC            mov eax,dword ptr ss:
00518066   E8 E9CDEEFF          call Unpack.00404E54
0051806B   FF75 84            push dword ptr ss:
0051806E   8D45 80            lea eax,dword ptr ss:
00518071   50                   push eax
00518072   B9 03000000          mov ecx,3
00518077   BA 0D000000          mov edx,0D
0051807C   8B45 FC            mov eax,dword ptr ss:
0051807F   E8 D0CDEEFF          call Unpack.00404E54
00518084   FF75 80            push dword ptr ss:
00518087   8D85 7CFFFFFF      lea eax,dword ptr ss:
0051808D   50                   push eax
0051808E   B9 05000000          mov ecx,5
00518093   BA 16000000          mov edx,16
00518098   8B45 FC            mov eax,dword ptr ss:
0051809B   E8 B4CDEEFF          call Unpack.00404E54
005180A0   FFB5 7CFFFFFF      push dword ptr ss:
005180A6   8D45 90            lea eax,dword ptr ss:
005180A9   BA 05000000          mov edx,5
005180AE   E8 01CCEEFF          call Unpack.00404CB4
005180B3   8B45 90            mov eax,dword ptr ss:         ; 注册码来了,与堆栈里出现的一致
005180B6   8D55 94            lea edx,dword ptr ss:
005180B9   E8 6A0FF6FF          call Unpack.00479028
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
堆栈会出现这样:
0012FC8C   00F02238    ASCII "4dd82"
0012FC90   00F02228    ASCII "1b1"
0012FC94   00EE6094    ASCII "cfb"
0012FC98   00F02214    ASCII "42944dd"
0012FC9C   00F02200    ASCII "ad5041"

这里我的注册码:ad504142944ddcfb1b14dd82
这样就简单的追出了注册码,找爆破点也很容易

-------------------------------------------------------------------------

大家可以拿FASTTV练练,因为这两个注册机制基本相同

【版权声明】: 转载请注明作者并保持文章的完整, 谢谢!

姿式咖啡 发表于 2009-9-9 15:08

过来学习了

寒风飘雪 发表于 2009-9-9 14:15

看不懂~~~~

王者之剑 发表于 2009-9-9 19:04

MS这个只要改两处就行了

ghwj1985 发表于 2009-9-10 01:00

这么简单喔都搞不来哦

ZeNiX 发表于 2009-9-11 12:56

歡迎llight多多和大家分享

11212122 发表于 2009-9-11 22:44

额.上一次搞一个网络电视。

追到注册码了。

结果是服务器远程验证的。

郁闷致死。

mk101 发表于 2009-9-11 23:02

过来学习一下

powerwill 发表于 2009-9-19 23:58

很不错..不顶不行了..

1512 发表于 2009-9-21 17:29

很不错..不顶不行了..
页: [1] 2 3 4 5 6
查看完整版本: "流星网络电视"简单破解