- UID
- 42324
注册时间2007-12-21
阅读权限20
最后登录1970-1-1
以武会友
该用户从未签到
|
【文章作者】: 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)
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 编辑 ] |
|