找回密码
 注册
搜索
热搜: 回贴

易语言LikeOne新视听网络电影电视脱壳,易语言,脱壳技术

2010-1-30 18:22| 发布者: admin| 查看: 77| 评论: 0|原作者: 九天玄女


易语言LikeOne新视听网络电影电视脱壳,易语言,脱壳技术
2008年06月23日 星期一 下午 05:46
【脱文标题】 易语言LikeOne新视听网络电影电视UPX-Scrambler RC1.x反脱壳分析 伪破解



【破文作者】 weiyi75[Dfcg][D.4S]



【作者邮箱】 weiyi75@sohu.com



【作者主页】 Dfcg官方大本营、龙族联盟论坛



【使用工具】 Peid,Anti-UPX scramble.exe,UpxShell,olldbg,winhex



【破解平台】 WinNT/2000/XP



【软件名称】 LikeOne新视听网络电影电视



【下载页面】 点击下载



【软件大小】 1169 KB



【软件限制】 UPX-Scrambler RC1.x -> ㎡nT畂L [Overlay]防脱壳,启动NAG 功能限制。



【软件简介】 最值得信赖的网络电影电视软件。500多个国内外电视电影台,40多个精彩视频节目,100多部最新电影。超强音量控制。<新视听网络电影电视>是一款功能强大的网络电影电视播放软件。一个网络视频、音频的巨大仓库,软件中内置了多达数百个国内外精彩电视频道、数十个国内外精彩电台的广播,以及数百部最新精彩电影。



主要特点:



★在线实时收看数百个国内外精彩电影、电视频道的节目

★ 在线实时收听数十个国内外精彩电台广播;

★ 大量且不断更新的最新精彩电影;

★ 赏心悦目的数十个时尚写真精彩视频;

★ 简便的操作,您只需单击按钮便可进行观看、收听节目。

★ 专人负责节目链接,从而保证了节目链接的数量和质量。



【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)



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



【破解分析】



首先Peid 查壳,为UPX-Scrambler RC1.x -> ㎡nT畂L [Overlay],注意到[Overlay],是指程序尾部有数据,手动脱壳时尾部数据是不能脱壳出来的,因为它并没有载入内存中。UPX-Scrambler是UPX的一种加密器,使UpxShell等工具无法直接脱壳。



近期二哥提供了Upx脱壳工具全家福,目前用Upx包括变形Upx的程序还真多,赶快去下载吧,顶部工具介绍贴里面有下载地址。



工具脱壳



首先对付UPX-Scrambler,用Anti-UPX scramble,使用非常简单,自动帮你备份程序了。然后用Upxshell(Upx必须是1.90版),否则无法脱壳,脱的干干净净,Overlay自动帮我们复制了。



UPX-Scrambler RC1.x -> ㎡nT畂L [Overlay] To Microsoft Visual C 6.0 [Overlay]



904k To 3431k //用Upx脱Upx壳是最完美的。



Btw: 并非所有UPX-Scrambler RC1.x都是可以补丁的,略微变形一下工具就败下阵来了,手动脱壳复制Overlay我们还是要学。





手动脱壳



OD载入程序。



006AA60F > 90 NOP //外壳UpxScrambler入口。

006AA610 61 POPAD //特征码

006AA611 BE 00D06700 MOV ESI,LikeOne1.0067D000

006AA616 8DBE 0040D8FF LEA EDI,DWORD PTR DS:[ESI FFD84000]

006AA61C 57 PUSH EDI

006AA61D 83CD FF OR EBP,FFFFFFFF

006AA620 EB 10 JMP SHORT LikeOne1.006AA632

006AA622 EB 00 JMP SHORT LikeOne1.006AA624

006AA624 ^ EB EA JMP SHORT LikeOne1.006AA610

006AA626 ^ EB E8 JMP SHORT LikeOne1.006AA610

006AA628 8A06 MOV AL,BYTE PTR DS:[ESI]

006AA62A 46 INC ESI

006AA62B 8807 MOV BYTE PTR DS:[EDI],AL

006AA62D 47 INC EDI

006AA62E 01DB ADD EBX,EBX

006AA630 75 07 JNZ SHORT LikeOne1.006AA639

..............................................................



根据UPX及变形UPX



POPAD 对应 PUSHAD



PUSHAD



底下是



JMP XXXXX //入口或第二层壳的特性。



直接



Ctrl F 向下找PUSHAD



006AA77E 60 PUSHAD //一下就找到了。

006AA77F - E9 AD90D5FF JMP LikeOne1.00403831 //直接F4下来。



00403831 55 PUSH EBP //F8到达C语言入口,非也,应该是易语言,Upx不破坏输入表,直接用OD插件脱壳,重建输入表方式选择1。

00403832 8BEC MOV EBP,ESP

00403834 6A FF PUSH -1

00403836 68 F0624000 PUSH LikeOne1.004062F0

0040383B 68 A44C4000 PUSH LikeOne1.00404CA4

00403840 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]

00403846 50 PUSH EAX

00403847 64:8925 0000000>MOV DWORD PTR FS:[0],ESP

0040384E 83EC 58 SUB ESP,58

00403851 53 PUSH EBX

00403852 56 PUSH ESI

00403853 57 PUSH EDI

00403854 8965 E8 MOV DWORD PTR SS:[EBP-18],ESP

00403857 FF15 48604000 CALL DWORD PTR DS:[406048] ; KERNEL32.GetVersion

0040385D 33D2 XOR EDX,EDX

0040385F 8AD4 MOV DL,AH

.................................................................................



关闭OD。



直接运行脱壳程序是无法运行的,提示你文件数据错误,因为尾部Overlay没有复制出来,我先以为程序有自校验,原来是新版的Peid查壳时Overlay翻译成覆盖了,一时不适应,浪费了不少时间,对比程序分析好久,这个是不细心的结果,自我批评一下。

运行Winhex打开原程序。



找到Overlay数据,从尾部开始,然后向上看,找到一大堆00 00与31 2E 等明显分界点,这里就是Overlay的起点。



我们看到尾部数据从偏移量987开始。在987处点右键选块开始。









然后滚动条拉到底,到偏移量924990为止,在924990处点右键选块结束。



Crtl C 复制选定内容。



然后打开脱壳文件,直接滚动条到尾部偏移量2815487处,点右键-编辑-剪贴板数据写入,确定两次。





原理搞清楚就不犹豫,保存文件,问你是否更新程序,是,运行正常。



904k To 3652k



比工具脱壳大,并且用工具脱壳你可以看见易语言的标记区段。



Alt M打开内存镜像



内存镜像,项目 15

地址=00409000

大小=0029C000 (2736128.)

Owner=LikeOne1 00400000

区段=.ecode //易语言区段。

类型=Imag 01001002

访问=R

初始访问=RWE



这次手动脱壳资源也完全释放了。



不过易语言资源没工具编辑,代码也完全释放了。



我们用资源编辑工具和W32Dasm也可以识别这个程序是易语言。





下面就是伪破解。



首先看清软件的限制。



启动时看到NAG,其它限制逐一搞定,先搞NAG。



OD命令行下断点



bp DestroyWindow



DestroyWindow 用途是破坏(即清除)指定的窗口以及它的所有子窗口(在vb里使用:用处不大。原文:it is unlikely to be of much use.)一般程序退出时调用或关闭窗口时调用。



为什么要下这个断点,思路,程序在启动画面出现后,然后就要关闭它,接着调用NAG画面。



我们就可以通过这个断点在NAG之前拦截启动画面关闭后的代码,然后主动权就在我们手里,看哪里可以跳过NAG。



F9运行,看着程序装完Overlay数据当然中断下来。



77DF736E > B8 59110000 MOV EAX,1159

77DF7373 8D5424 04 LEA EDX,DWORD PTR SS:[ESP 4]

77DF7377 CD 2E INT 2E

77DF7379 C2 0400 RETN 4 //直接在这里下断,F9中断后取消断点。



堆栈友好提示。



0012F710 100A421B /CALL 到 DestroyWindow 来自 krnln.100A4215

0012F714 01050390 \hWnd = 01050390 (class=’Afx:10000000:b:10011:1900015:0’)

0012F718 060101CC

0012F71C 01403380

0012F720 00000000

0012F724 1005D750 返回到 krnln.1005D750

0012F728 024C1901

0012F72C 0054E62C LikeOne1.0054E62C

0012F730 0012F774

0012F734 100D7224 krnln.100D7224



然后我们Ctrl F9 根据OD信息框提示我们回到程序领空为止。



按了3次Ctrl F9



100543B5 C3 RETN



OD提示返回到006A0AF7



006A0AF2 E8 62370000 CALL LikeOne1.006A4259

006A0AF7 83C4 10 ADD ESP,10 //返回到这里。

006A0AFA 8BE5 MOV ESP,EBP

006A0AFC 5D POP EBP

006A0AFD C3 RETN //这里要进入程序领空,进去吧,对跟踪更容易些。



又进入系统领空。



10054426 5F POP EDI ; 01403290

10054427 5E POP ESI

10054428 895D F4 MOV DWORD PTR SS:[EBP-C],EBX

1005442B 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX

1005442E 8B55 E8 MOV EDX,DWORD PTR SS:[EBP-18]

10054431 C782 E4010000 0>MOV DWORD PTR DS:[EDX 1E4],0

1005443B 837D F4 00 CMP DWORD PTR SS:[EBP-C],0

1005443F 74 13 JE SHORT krnln.10054454



还是Ctrl F9返回。



这回按了19次Ctrl F9



100543B5 C3 RETN



OD信息栏提示返回到0069C42C



0069C427 E8 2D7E0000 CALL LikeOne1.006A4259

0069C42C 83C4 28 ADD ESP,28 //返回到这里,回的正是时候。

0069C42F E8 180C0000 CALL LikeOne1.0069D04C //这个Call跟进去可以有大量跟踪细节,二哥没跟踪出注册码,里面很复杂,它的作用如果没有注册,就会产生NAG注册窗口,我们点以后再说。那么这里就是要放炸药的位置^_^,NOP掉,注册标记是没有指望了。

0069C434 68 04000080 PUSH 80000004 //继续执行。

0069C439 6A 00 PUSH 0

0069C43B 68 D3E65200 PUSH LikeOne1.0052E6D3 ; ASCII "windir"

0069C440 68 01000000 PUSH 1

0069C445 BB 0C010000 MOV EBX,10C

.....................................................



F9运行。



这里NAG就搞定了。



继续搞定三处功能限制。



首先要看清楚限制。



1, 点港澳台电视标签,程序马上就禁用了这个标签。光标由手变为鼠标指针,再点是不会理你的。右边的节目菜单出现您好,请注册的字样。



2, 点推荐频道标签,也是禁用了。



3, 点电影台,同样禁用了。



这些标签禁用,虽然用按钮突破专家等可以暂时打开,但点击后再次禁用。



我们调试人员当然用OD提供的窗口工具插件,二哥论坛里面提供了OD全部插件下载,赶快去下载吧。



使用方法很容易,按住Shift,移动鼠标到灰标签,松开鼠标,然后点使有效,全部激活。



如图。







然后我们来治本。



那就是



EnableWindow

允许或禁止鼠标和键盘控制指定窗口和条目(禁止时菜单变灰)

BOOL EnableWindow(

HWND hWnd, // 窗口句柄

BOOL bEnable // 允许/禁止输入

);

Returns

如窗口以前被禁止则返回一TRUE,否则返回 FALSE。



为这个我翻了不少资料,实际调试发现确实有效,它可不是专门对窗口有效,对按钮,标签,等都有效。



于是命令行。



bp EnableWindow



点港澳台标签,立即中断。



77DF5CBE > 6A 53 PUSH 53

77DF5CC0 FF7424 0C PUSH DWORD PTR SS:[ESP C]

77DF5CC4 FF7424 0C PUSH DWORD PTR SS:[ESP C]

77DF5CC8 E8 E3FFFFFF CALL USER32.77DF5CB0

77DF5CCD C2 0800 RETN 8



堆栈友好提示。



0012F9D4 100A728D /CALL 到 EnableWindow 来自 krnln.100A7287

0012F9D8 02C20216 |hWnd = 02C20216 (’港澳台电视’,class=’Afx:10000000:b:710039f:1900015:0’,parent=02DF0284)

0012F9DC 00000000 \Enable = FALSE //怒,标签被禁用了。

0012F9E0 1002D98E 返回到 krnln.1002D98E 来自 krnln.100A7279

0012F9E4 00000000

0012F9E8 0012FA98

0012F9EC 014002A0

0012F9F0 0069B736 返回到 LikeOne1.0069B736 来自 LikeOne1.00699B94

0012F9F4 100D7570 krnln.100D7570



还是Ctrl F9根据OD信息提示返回,看是哪里做的手脚。



按了四次 Ctrl F9



10054B46 C3 RETN



OD提示返回到 0069BABD



0069BA7D E8 E9870000 CALL LikeOne1.006A426B

0069BA82 83C4 34 ADD ESP,34

0069BA85 8945 C8 MOV DWORD PTR SS:[EBP-38],EAX

0069BA88 837D C8 00 CMP DWORD PTR SS:[EBP-38],0

0069BA8C 0F84 04000000 JE LikeOne1.0069BA96

0069BA92 33C0 XOR EAX,EAX

0069BA94 EB 05 JMP SHORT LikeOne1.0069BA9B

0069BA96 B8 01000000 MOV EAX,1 //从很远的位置更上面跳到这里。

0069BA9B 85C0 TEST EAX,EAX

0069BA9D 0F84 3A000000 JE LikeOne1.0069BADD //爆破点2,必须跳转。



修改为



0069BA9D /75 3E JNZ SHORT LikeOne1.0069BADD

0069BA9F |90 NOP

0069BAA0 |90 NOP

0069BAA1 |90 NOP

0069BAA2 |90 NOP



0069BAA3 6A 00 PUSH 0

0069BAA5 68 01000000 PUSH 1

0069BAAA 6A FF PUSH -1

0069BAAC 6A 06 PUSH 6

0069BAAE 68 80030116 PUSH 16010380

0069BAB3 68 01000152 PUSH 52010001

0069BAB8 E8 96870000 CALL LikeOne1.006A4253 //功能限制。

0069BABD 83C4 18 ADD ESP,18 //返回到这里,当然往上看。

0069BAC0 6A 00 PUSH 0

0069BAC2 68 E8030000 PUSH 3E8

0069BAC7 6A FF PUSH -1

0069BAC9 6A 08 PUSH 8

0069BACB 68 AE030116 PUSH 160103AE

0069BAD0 68 01000152 PUSH 52010001

0069BAD5 E8 79870000 CALL LikeOne1.006A4253

..............................................................



保存上面的修改,运行,是否没有NAG和要你注册的提示了,灰标签也解决了,一切尽在掌握。



然后一样的方法。



bp EnableWindow



点推荐频道标签标签,立即中断。



77DF5CBE > 6A 53 PUSH 53

77DF5CC0 FF7424 0C PUSH DWORD PTR SS:[ESP C]

77DF5CC4 FF7424 0C PUSH DWORD PTR SS:[ESP C]

77DF5CC8 E8 E3FFFFFF CALL USER32.77DF5CB0

77DF5CCD C2 0800 RETN 8



堆栈友好提示。



0012F9D4 100A728D /CALL 到 EnableWindow 来自 krnln.100A7287

0012F9D8 023E016E |hWnd = 023E016E (’推荐频道’,class=’Afx:1610000:b:10011:1900015:0’,parent=02B001A6)

0012F9DC 00000000 \Enable = FALSE

0012F9E0 1002D98E 返回到 krnln.1002D98E 来自 krnln.100A7279



按四次Ctrl F9



10054B46 C3 RETN



返回到0069B5C6



0069B586 E8 E08C0000 CALL Cracker3.006A426B

0069B58B 83C4 34 ADD ESP,34

0069B58E 8945 C8 MOV DWORD PTR SS:[EBP-38],EAX

0069B591 837D C8 00 CMP DWORD PTR SS:[EBP-38],0

0069B595 0F84 04000000 JE Cracker3.0069B59F

0069B59B 33C0 XOR EAX,EAX

0069B59D EB 05 JMP SHORT Cracker3.0069B5A4

0069B59F B8 01000000 MOV EAX,1

0069B5A4 85C0 TEST EAX,EAX

0069B5A6 0F84 3A000000 JE Cracker3.0069B5E6 //爆破点3



修改为



0069B5A6 /75 3E JNZ SHORT Cracker3.0069B5E6

0069B5A8 |90 NOP

0069B5A9 |90 NOP

0069B5AA |90 NOP

0069B5AB |90 NOP



0069B5AC 6A 00 PUSH 0

0069B5AE 68 01000000 PUSH 1

0069B5B3 6A FF PUSH -1

0069B5B5 6A 06 PUSH 6

0069B5B7 68 95030116 PUSH 16010395

0069B5BC 68 01000152 PUSH 52010001

0069B5C1 E8 8D8C0000 CALL Cracker3.006A4253 //功能限制。

0069B5C6 83C4 18 ADD ESP,18 //返回到这里。

0069B5C9 6A 00 PUSH 0

0069B5CB 68 E8030000 PUSH 3E8

0069B5D0 6A FF PUSH -1

0069B5D2 6A 08 PUSH 8

0069B5D4 68 AE030116 PUSH 160103AE

0069B5D9 68 01000152 PUSH 52010001

0069B5DE E8 708C0000 CALL Cracker3.006A4253

..............................................................



点电影台标签,再点电影频道,立即中断。



77DF5CBE > 6A 53 PUSH 53

77DF5CC0 FF7424 0C PUSH DWORD PTR SS:[ESP C]

77DF5CC4 FF7424 0C PUSH DWORD PTR SS:[ESP C]

77DF5CC8 E8 E3FFFFFF CALL USER32.77DF5CB0

77DF5CCD C2 0800 RETN 8



堆栈有好提示



0012F880 100A728D /CALL 到 EnableWindow 来自 krnln.100A7287

0012F884 03070196 |hWnd = 03070196 (’电影台’,class=’Afx:10000000:b:73f022f:1900015:0’,parent=02B001A6)

0012F888 00000000 \Enable = FALSE

0012F88C 1002D98E 返回到 krnln.1002D98E 来自 krnln.100A7279

0012F890 00000000



按四次Ctrl F9



10054B46 C3 RETN



返回到0069FF37



0069FEF7 E8 6F430000 CALL Cracker3.006A426B

0069FEFC 83C4 34 ADD ESP,34

0069FEFF 8945 C8 MOV DWORD PTR SS:[EBP-38],EAX

0069FF02 837D C8 00 CMP DWORD PTR SS:[EBP-38],0

0069FF06 0F84 04000000 JE Cracker3.0069FF10

0069FF0C 33C0 XOR EAX,EAX

0069FF0E EB 05 JMP SHORT Cracker3.0069FF15

0069FF10 B8 01000000 MOV EAX,1

0069FF15 85C0 TEST EAX,EAX

0069FF17 0F84 3A000000 JE Cracker3.0069FF57 //爆破点4



修改为



0069FF17 /75 3E JNZ SHORT Cracker3.0069FF57

0069FF19 |90 NOP

0069FF1A |90 NOP

0069FF1B |90 NOP

0069FF1C |90 NOP



0069FF1D 6A 00 PUSH 0

0069FF1F 68 01000000 PUSH 1

0069FF24 6A FF PUSH -1

0069FF26 6A 06 PUSH 6

0069FF28 68 86030116 PUSH 16010386

0069FF2D 68 01000152 PUSH 52010001

0069FF32 E8 1C430000 CALL Cracker3.006A4253 //功能限制。

0069FF37 83C4 18 ADD ESP,18 //返回点。

0069FF3A 6A 00 PUSH 0

0069FF3C 68 E8030000 PUSH 3E8

0069FF41 6A FF PUSH -1

0069FF43 6A 08 PUSH 8

0069FF45 68 AE030116 PUSH 160103AE

0069FF4A 68 01000152 PUSH 52010001

0069FF4F E8 FF420000 CALL Cracker3.006A4253

0069FF54 83C4 18 ADD ESP,18

........................................................



保存所有修改,功能限制解除,正常运行。



关于菜单提示注册问题,可以搞调,但不好看,留着吧,反正永远不点它。



【破解总结】



0069C42F E8 180C0000



改为



0069C42F 90 NOP

0069C430 90 NOP

0069C431 90 NOP

0069C432 90 NOP

0069C433 90 NOP



0069BA9D 0F84 3A000000 JE LikeOne1.0069BADD



改为



0069BA9D /75 3E JNZ SHORT 23.0069BADD

0069BA9F |90 NOP

0069BAA0 |90 NOP

0069BAA1 |90 NOP

0069BAA2 |90 NOP



0069B5A6 0F84 3A000000 JE Cracker3.0069B5E6



改为



0069B5A6 /75 3E JNZ SHORT 23.0069B5E6

0069B5A8 |90 NOP

0069B5A9 |90 NOP

0069B5AA |90 NOP

0069B5AB |90 NOP



0069FF17 0F84 3A000000 JE Cracker3.0069FF57



改为



0069FF17 /75 3E JNZ SHORT 23.0069FF57

0069FF19 |90 NOP

0069FF1A |90 NOP

0069FF1B |90 NOP

0069FF1C |90 NOP




最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 21:32 , Processed in 0.162341 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部