飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 7849|回复: 10

[原创] 网络传送带2.63.415 暴力破解

[复制链接]

该用户从未签到

发表于 2008-8-11 17:03:26 | 显示全部楼层 |阅读模式
【文章作者】: leafstone
【软件名称】: 网络传送带 (Net Transport)2.63.415 简体版
【下载地址】: http://www.onlinedown.net/soft/2919.htm
【加壳方式】: 无
【使用工具】: Peid0.94,OD
【操作平台】: XP SP2
【作者声明】: 我是一只小小小菜鸟。这是我申请PYG解密小组调试的程序的破文,以飨读者!

因为已经注册完毕,两台电脑都被我测试了,于是不能够从头再跟然后写破文,那么就从思路下手,整理一下。
1、查壳,Microsoft Visual C++ 6.0,无壳,按照冰糖糖的话就是软柿子……
2、直接拖进OD,然后一路狂跟,发现程序有检查int3断点的功能,F8跟跟不过去。尝试下断程序内部或者修改文件,运行后直接退出。可见程序有自校验。
3、破除自校验地方法用bp CreateFileA函数尝试。CreateFile 函数详解请看http://blog.21ic.com/user1/1831/archives/2006/28800.html,去除自校验必备。因为断点在Kernel32.dll ,所以能够下断。我的OD其它设置参看Fly大侠的过TMD壳的插件的设置。
断下后运行,然后Alt+F9返回,看到地址空间在libcrypto.dll中,可见自校验是在这里定义的,这里就不多研究了。然后接着走来到程序领空。
0045A113  |. /74 04         JE SHORT NetTrans.0045A119               ;  跳了
0045A115  |. |8B7424 60     MOV ESI,DWORD PTR SS:[ESP+60]
0045A119  |> \8D4C24 14     LEA ECX,DWORD PTR SS:[ESP+14]
(修改完下面说道的跳以后,这里就不跳了,但是改与不改没有关系,功能没有差别)
#################################
00468567   . /75 4E         JNZ SHORT NetTrans.004685B7              ;  跳了
00468569   . |8D4C24 3C     LEA ECX,DWORD PTR SS:[ESP+3C]
0046856D   . |C68424 FC0F00>MOV BYTE PTR SS:[ESP+FFC],6
00468575   . |E8 361AFFFF   CALL NetTrans.00459FB0
0046857A   . |8D4C24 24     LEA ECX,DWORD PTR SS:[ESP+24]
0046857E   . |C68424 FC0F00>MOV BYTE PTR SS:[ESP+FFC],3
00468586   . |E8 B3F90A00   CALL <JMP.&MFC42u.#800>
0046858B   . |8D4C24 20     LEA ECX,DWORD PTR SS:[ESP+20]
0046858F   . |C68424 FC0F00>MOV BYTE PTR SS:[ESP+FFC],0
00468597   . |E8 A2F90A00   CALL <JMP.&MFC42u.#800>
0046859C   . |8D4C24 10     LEA ECX,DWORD PTR SS:[ESP+10]
004685A0   . |C78424 FC0F00>MOV DWORD PTR SS:[ESP+FFC],-1
004685AB   . |E8 8EF90A00   CALL <JMP.&MFC42u.#800>
004685B0   . |33C0          XOR EAX,EAX
004685B2   . |E9 760D0000   JMP NetTrans.0046932D                  ;注意此跳,死亡跳
004685B7   > \8D4C24 28     LEA ECX,DWORD PTR SS:[ESP+28]
#################################

004685E5   . /75 79         JNZ SHORT NetTrans.00468660            ;没跳
004685E7   . |6A 00         PUSH 0
004685E9   . |8D8C24 480100>LEA ECX,DWORD PTR SS:[ESP+148]
004685F0   . |E8 DBE80200   CALL NetTrans.00496ED0
004685F5   . |8D8C24 440100>LEA ECX,DWORD PTR SS:[ESP+144]
004685FC   . |C68424 FC0F00>MOV BYTE PTR SS:[ESP+FFC],0B
00468604   . |E8 1BF80A00   CALL <JMP.&MFC42u.#2506>               ;注册Nag
00468609   . |3D 55050000   CMP EAX,555
0046860E   . |75 14         JNZ SHORT NetTrans.00468624
00468610   . |6A 00         PUSH 0                                   ; /Arg4 = 00000000
00468612   . |6A 00         PUSH 0                                   ; |Arg3 = 00000000
00468614   . |8D5424 30     LEA EDX,DWORD PTR SS:[ESP+30]            ; |
00468618   . |6A 00         PUSH 0                                   ; |Arg2 = 00000000
0046861A   . |52            PUSH EDX                                 ; |Arg1
0046861B   . |8D4C24 4C     LEA ECX,DWORD PTR SS:[ESP+4C]            ; |
0046861F   . |E8 AC23FFFF   CALL NetTrans.0045A9D0                   ; \NetTrans.0045A9D0
00468624   > |8D8C24 A80100>LEA ECX,DWORD PTR SS:[ESP+1A8]
0046862B   . |C68424 FC0F00>MOV BYTE PTR SS:[ESP+FFC],0D
00468633   . |E8 06F90A00   CALL <JMP.&MFC42u.#800>
00468638   . |8D8C24 A40100>LEA ECX,DWORD PTR SS:[ESP+1A4]
0046863F   . |C68424 FC0F00>MOV BYTE PTR SS:[ESP+FFC],0C
00468647   . |E8 F2F80A00   CALL <JMP.&MFC42u.#800>
0046864C   . |8D8C24 440100>LEA ECX,DWORD PTR SS:[ESP+144]
00468653   . |C68424 FC0F00>MOV BYTE PTR SS:[ESP+FFC],0A
0046865B   . |E8 F0F80A00   CALL <JMP.&MFC42u.#641>
00468660   > \8B4424 28     MOV EAX,DWORD PTR SS:[ESP+28]
#############################
很明显,没跳的那个一定要跳
004685E5   . /EB 79         JMP SHORT NetTrans.00468660
注册Nag去除

4、30天限制,往下接着跟
00468669   . /75 6C         JNZ SHORT NetTrans.004686D7               ;没跳
0046866B   . |8D4C24 3C     LEA ECX,DWORD PTR SS:[ESP+3C]
0046866F   . |E8 8C27FFFF   CALL NetTrans.0045AE00
00468674   . |85C0          TEST EAX,EAX
00468676   . |75 5F         JNZ SHORT NetTrans.004686D7
00468678   . |8D4C24 28     LEA ECX,DWORD PTR SS:[ESP+28]
0046867C   . |C68424 FC0F00>MOV BYTE PTR SS:[ESP+FFC],9
00468684   . |E8 B5F80A00   CALL <JMP.&MFC42u.#800>
00468689   . |8D4C24 3C     LEA ECX,DWORD PTR SS:[ESP+3C]
0046868D   . |C68424 FC0F00>MOV BYTE PTR SS:[ESP+FFC],6
00468695   . |E8 1619FFFF   CALL NetTrans.00459FB0
0046869A   . |8D4C24 24     LEA ECX,DWORD PTR SS:[ESP+24]
0046869E   . |C68424 FC0F00>MOV BYTE PTR SS:[ESP+FFC],3
004686A6   . |E8 93F80A00   CALL <JMP.&MFC42u.#800>
004686AB   . |8D4C24 20     LEA ECX,DWORD PTR SS:[ESP+20]
004686AF   . |C68424 FC0F00>MOV BYTE PTR SS:[ESP+FFC],0
004686B7   . |E8 82F80A00   CALL <JMP.&MFC42u.#800>
004686BC   . |8D4C24 10     LEA ECX,DWORD PTR SS:[ESP+10]
004686C0   . |C78424 FC0F00>MOV DWORD PTR SS:[ESP+FFC],-1
004686CB   . |E8 6EF80A00   CALL <JMP.&MFC42u.#800>
004686D0   . |33C0          XOR EAX,EAX
004686D2   . |E9 560C0000   JMP NetTrans.0046932D                 ;注意此跳,致死
004686D7   > \8D8C24 400500>LEA ECX,DWORD PTR SS:[ESP+540]
###############################
很简单,修改此跳
00468669   . /EB 6C         JMP SHORT NetTrans.004686D7               ;没跳

影音传送带已经可以运行起来了

5、发现有广告,注册才能去除广告。工具菜单有去除广告选项,但是灰色了。很容易想到使用bp EnableMenuItem函数
然后点击工具菜单,被断下。注意堆栈窗口,ItemID。菜单选项是根据这个来判断的,从0开始,去除广告在第九个位置……
   未命名.gif (12.93 KB)
未命名.gif
2008-8-11 16:32
alt+F9返回程序领空
00461FF7   .  E8 D489FFFF   CALL NetTrans.0045A9D0                   ; \NetTrans.0045A9D0
00461FFC   .  8B4C24 04     MOV ECX,DWORD PTR SS:[ESP+4]
00462000   .  8B41 F8       MOV EAX,DWORD PTR DS:[ECX-8]
00462003   .  85C0          TEST EAX,EAX
00462005   . /75 17         JNZ SHORT NetTrans.0046201E              ;  注意此跳
00462007   . |8B7424 28     MOV ESI,DWORD PTR SS:[ESP+28]
0046200B   . |6A 00         PUSH 0
0046200D   . |8BCE          MOV ECX,ESI
0046200F   . |8B16          MOV EDX,DWORD PTR DS:[ESI]
00462011   . |FF12          CALL DWORD PTR DS:[EDX]
00462013   . |8B06          MOV EAX,DWORD PTR DS:[ESI]
00462015   . |6A 01         PUSH 1
00462017   . |8BCE          MOV ECX,ESI
00462019   . |FF50 04       CALL DWORD PTR DS:[EAX+4]            ;从此返回
0046201C   . |EB 2C         JMP SHORT NetTrans.0046204A
0046201E   > \8B7424 28     MOV ESI,DWORD PTR SS:[ESP+28]
00462022   .  57            PUSH EDI
00462023   .  6A 01         PUSH 1
00462025   .  8BCE          MOV ECX,ESI
00462027   .  8B16          MOV EDX,DWORD PTR DS:[ESI]
00462029   .  FF12          CALL DWORD PTR DS:[EDX]
0046202B   .  8B3E          MOV EDI,DWORD PTR DS:[ESI]
0046202D   .  6A 01         PUSH 1
0046202F   .  68 C8425500   PUSH NetTrans.005542C8                   ;  UNICODE "ShowAd"
00462034   .  68 DC1B5500   PUSH NetTrans.00551BDC                   ;  UNICODE "Others"
00462039   .  B9 00945500   MOV ECX,NetTrans.00559400                ;  ASCII "pDS"
0046203E   .  E8 7D610B00   CALL <JMP.&MFC42u.#3516>
00462043   .  50            PUSH EAX
00462044   .  8BCE          MOV ECX,ESI
00462046   .  FF57 04       CALL DWORD PTR DS:[EDI+4]
00462049   .  5F            POP EDI
0046204A   >  8D4C24 04     LEA ECX,DWORD PTR SS:[ESP+4]
###############################
注意返回处的上面,00462005   . /75 17         JNZ SHORT NetTrans.0046201E              ;  注意此跳
就是关键的地方,修改为jmp,灰色菜单搞定!

6、运行发现依然会有广告。
我们返回到这里看,注意00461FF7的call,似乎是一个注册判断,然后test eax,eax,没注册jnz就不跳
00461FF7   .  E8 D489FFFF   CALL NetTrans.0045A9D0                   ; \NetTrans.0045A9D0
00461FFC   .  8B4C24 04     MOV ECX,DWORD PTR SS:[ESP+4]
00462000   .  8B41 F8       MOV EAX,DWORD PTR DS:[ECX-8]
00462003   .  85C0          TEST EAX,EAX
00462005   . /75 17         JNZ SHORT NetTrans.0046201E              ;  注意此跳
###########
我们跟进去此call

0045A9D0  /$  6A FF         PUSH -1
局部调用来自 0045EF8C, 0045FA40, 0045FE3E, 00461FF7, 004685D7, 0046861F, 00491EB9, 00497899

局部调用很多,猜想应该是关键的call。

因为我们发现运行程序一会儿才会出现广告栏,猜想有判断。于是在0045A9D0下断,然后重新运行程序。

运行程序过程中会被断下,可见此处是关键,算法call也会在其中。

F9继续运行,我们要的是去除广告位。

网络传送带完全运行起来后,我们等待广告出现,然后OD就断下了。
0045FE05   . /0F85 96010000 JNZ NetTrans.0045FFA1
0045FE0B   . |8D4C24 2C     LEA ECX,DWORD PTR SS:[ESP+2C]
0045FE0F   . |E8 0CA1FFFF   CALL NetTrans.00459F20
0045FE14   . |8D4C24 10     LEA ECX,DWORD PTR SS:[ESP+10]
0045FE18   . |C78424 EC0300>MOV DWORD PTR SS:[ESP+3EC],5
0045FE23   . |E8 34810B00   CALL <JMP.&MFC42u.#540>
0045FE28   . |33FF          XOR EDI,EDI
0045FE2A   . |8D5424 10     LEA EDX,DWORD PTR SS:[ESP+10]
0045FE2E   . |57            PUSH EDI                                 ; /Arg4 => 00000000
0045FE2F   . |57            PUSH EDI                                 ; |Arg3 => 00000000
0045FE30   . |57            PUSH EDI                                 ; |Arg2 => 00000000
0045FE31   . |52            PUSH EDX                                 ; |Arg1
0045FE32   . |8D4C24 3C     LEA ECX,DWORD PTR SS:[ESP+3C]            ; |
0045FE36   . |C68424 FC0300>MOV BYTE PTR SS:[ESP+3FC],6              ; |
0045FE3E   . |E8 8DABFFFF   CALL NetTrans.0045A9D0                   ; \NetTrans.0045A9D0  
0045FE43   . |8B4424 10     MOV EAX,DWORD PTR SS:[ESP+10]            ;  MFC42u.5F8CB6D4   返回到这里
0045FE47   . |3978 F8       CMP DWORD PTR DS:[EAX-8],EDI
0045FE4A   . |74 1E         JE SHORT NetTrans.0045FE6A
0045FE4C   . |6A 01         PUSH 1
0045FE4E   . |68 C8425500   PUSH NetTrans.005542C8                   ;  UNICODE "ShowAd"
0045FE53   . |68 DC1B5500   PUSH NetTrans.00551BDC                   ;  UNICODE "Others"
0045FE58   . |B9 00945500   MOV ECX,NetTrans.00559400                ;  ASCII "pDS"
0045FE5D   . |E8 5E830B00   CALL <JMP.&MFC42u.#3516>
0045FE62   . |85C0          TEST EAX,EAX
0045FE64   . |0F84 10010000 JE NetTrans.0045FF7A
0045FE6A   > |39BE A4020000 CMP DWORD PTR DS:[ESI+2A4],EDI
0045FE70   . |74 1C         JE SHORT NetTrans.0045FE8E

################################

向上找关键位置,0045FE05   . /0F85 96010000 JNZ NetTrans.0045FFA1 可跳过此call
于是修改jmp,广告顺利去掉,永远不再有!

7、注意帮助--关于网络传送带,现实依然是未注册,注册按钮可点击
这个一般方法是从OD数据窗口找到未注册的信息,然后找数据空白写入,然后偏移中修改地址,使得显示注册
注册按钮不可用可通过EnableWindow跟踪
不过,因为程序没有加壳,帮了我们的大忙。
我们用UE打开程序,搜索到Unicode的Unregistered,然后替换成我们的注册信息
然后我用ResHack修改资源,把注册按钮修改成disable,暴力破解至此完成

8、支持PYG,回报PYG,希望能够顺利加入解密小组,以后会给大家带来更多的破文和教程!

补充:今天尝试用其下载,功能方面没问题,但是14分钟左右会自动退出,用OD等待14分钟,找到关键地方。破解之……
提供一个稍微完美的版本~

[ 本帖最后由 leafstone 于 2008-8-12 18:04 编辑 ]

NetTransport.rar

501.97 KB, 下载次数: 5, 下载积分: 飘云币 -2 枚

PYG19周年生日快乐!

该用户从未签到

发表于 2008-8-11 17:13:21 | 显示全部楼层
又一个沙发,学习了
PYG19周年生日快乐!

该用户从未签到

发表于 2008-8-11 17:21:00 | 显示全部楼层
Good Job  通过了 ~~  /:good
PYG19周年生日快乐!

该用户从未签到

发表于 2008-8-12 09:29:31 | 显示全部楼层
谢谢 分享 学习了``
PYG19周年生日快乐!

该用户从未签到

发表于 2008-8-12 17:34:22 | 显示全部楼层
谢谢学习了,爆破很费时啊
PYG19周年生日快乐!

该用户从未签到

发表于 2008-8-14 23:35:26 | 显示全部楼层
CreateFile函数创建或打开下列对象,并返回一个可以用来访问这些对象的句柄。
        文件
        pipes
        邮槽
        通信资源
        磁盘驱动器(仅适用于windowsNT)
        控制台
        文件夹(仅用于打开)
PYG19周年生日快乐!

该用户从未签到

发表于 2008-8-18 23:05:01 | 显示全部楼层
好长啊,看了半天,学习一下
PYG19周年生日快乐!

该用户从未签到

发表于 2008-8-22 14:55:55 | 显示全部楼层
谢谢 分享 学习
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-12-24 08:16
  • 签到天数: 464 天

    [LV.9]以坛为家II

    发表于 2008-8-23 22:05:51 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-8-24 01:07:56 | 显示全部楼层
    返回不了你这里啊
    0045A113  |. /74 04         JE SHORT NetTrans.0045A119               ;  跳了
    0045A115  |. |8B7424 60     MOV ESI,DWORD PTR SS:[ESP+60]
    0045A119  |> \8D4C24 14     LEA ECX,DWORD PTR SS:[ESP+14]

    我怎么返回到了这?
    00F5A361    8BF0            mov     esi, eax
    00F5A363    83FE FF         cmp     esi, -1
    00F5A366    0F84 83000000   je      00F5A3EF
    00F5A36C    55              push    ebp
    00F5A36D    8B2D 1450F800   mov     ebp, dword ptr [<&KERNEL32.SetFi>; kernel32.SetFilePointer
    00F5A373    57              push    edi
    00F5A374    6A 02           push    2
    00F5A376    6A 00           push    0

    堆栈信息
    0012EE78   00401000  NetTrans.00401000
    0012EE7C   0012EF40
    0012EE80   0045B349  RETURN to NetTrans.0045B349
    0012EE84   00401000  NetTrans.00401000
    0012EE88   00000124
    0012EE8C   0012EEB8
    0012EE90   00000030
    0012EE94   0039BDD0  ASCII "C:\Program Files\Xi\NetXfer\NetTransport.exe.mqm"
    0012EE98   7C80B3D5  kernel32.GetModuleFileNameW
    0012EE9C   0055E8E0  NetTrans.0055E8E0
    0012EEA0   77C17EE3  msvcrt.wcscmp
    0012EEA4   FFFFFF00
    0012EEA8   00398A48  UNICODE ".mqm"
    0012EEAC   0053F20C  NetTrans.0053F20C
    0012EEB0   00000031
    0012EEB4   0039BDD0  ASCII "C:\Program Files\Xi\NetXfer\NetTransport.exe.mqm"
    0012EEB8   A93F5416
    0012EEBC   C6F8EFA2
    0012EEC0   C1C34BF5
    0012EEC4   41D8D70A
    0012EEC8   A08483D0
    0012EECC   4B7C27DE
    0012EED0   BF65B697
    0012EED4   AEB916EA
    0012EED8   BA920C3B
    0012EEDC   00000000
    0012EEE0   00000000
    0012EEE4   00000000
    0012EEE8   0012FEF8  Pointer to next SEH record
    0012EEEC   00524848  SE handler
    0012EEF0   00000003
    0012EEF4   004697C6  RETURN to NetTrans.004697C6 from NetTrans.0045B200
    0012EEF8   00000000
    0012EEFC   00559C20  UNICODE ".bqm"
    0012EF00   00398DA8  UNICODE "C:\Program Files\Xi\NetXfer\NetTransport.exe.mqm"
    0012EF04   0055E8E0  NetTrans.0055E8E0
    0012EF08   0055E8E0  NetTrans.0055E8E0
    0012EF0C   0012FFC0
    0012EF10   FFFFFFFF
    0012EF14   00398928  UNICODE "C:\Program Files\Xi\NetXfer\"
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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