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

计算机资料大全 3.0 Overlay 反脱壳去NAG,脱壳,脱壳技术

2010-1-30 18:21| 发布者: admin| 查看: 66| 评论: 0|原作者: 墨元


计算机资料大全 3.0 Overlay 反脱壳去NAG,脱壳,脱壳技术
2008年06月23日 星期一 下午 05:38
【脱文标题】 计算机资料大全 3.0 Overlay 反脱壳分析 Ctrl F8 智取NAG



【破文作者】 weiyi75[Dfcg]



【作者邮箱】 weiyi75@sohu.com



【作者主页】 Dfcg官方大本营



【使用工具】 Peid,UpxShell,olldbg,winhex



【破解平台】 WinNT/2000/XP



【软件名称】 计算机资料大全 3.0



【下载页面】 http://downloads.daqing.net/



【软件大小】 13.23M



【软件限制】 Nag,3次试用



【软件简介】 本软件是上网时下载的精彩文章,内容涉及到电脑技巧精彩文章、黑客手册、手机类、实用软件超级技巧、网络超级技巧、笑话等方面的知识,让您在轻松学习时候,不知不觉的增长知识!全方位、非商业而且有自己独特风格的文摘。《计算机资料大全》1.0版是免费软件,您可以任意传播,复制,但不得修改任何内容!这个软件我看没有终结版,欢迎大家给我提供资料,如果侵犯了哪位前辈的权利,来信通知我,立即纠正.





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



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



【破解分析】



首先Peid 查壳,为 UPX 0.89.6 - 1.02 / 1.05 - 1.24 (Delphi) stub -> Markus & Laszlo [Overlay],注意到[Overlay],然后用Upxshell轻松脱壳,正常运行。



幸运的是它是个普通Upx壳,我们假设它是一个变形Upx壳。



004A1430 > 60 PUSHAD //Upx外壳入口

004A1431 BE 00804600 MOV ESI,《计算机.00468000

004A1436 8DBE 0090F9FF LEA EDI,DWORD PTR DS:[ESI FFF99000]

004A143C C787 10270800 1>MOV DWORD PTR DS:[EDI 82710],F82C9510

004A1446 57 PUSH EDI

004A1447 83CD FF OR EBP,FFFFFFFF

004A144A EB 0E JMP SHORT 《计算机.004A145A

004A144C 90 NOP

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



直接Ctrl F 向下找Popad



004A159A 61 POPAD

004A159B ^ E9 64DEFDFF JMP 《计算机.0047F404 //直接F4下来。



0047F404 55 PUSH EBP //到达Oep,Loadpe脱壳。

0047F405 8BEC MOV EBP,ESP

0047F407 83C4 F0 ADD ESP,-10

0047F40A 53 PUSH EBX

0047F40B B8 A4F14700 MOV EAX,《计算机.0047F1A4

0047F410 E8 CF76F8FF CALL 《计算机.00406AE4

0047F415 33C0 XOR EAX,EAX

0047F417 55 PUSH EBP

0047F418 68 53F54700 PUSH 《计算机.0047F553

0047F41D 64:FF30 PUSH DWORD PTR FS:[EAX]

0047F420 64:8920 MOV DWORD PTR FS:[EAX],ESP

0047F423 E8 146CFEFF CALL 《计算机.0046603C

0047F428 BA 143E4800 MOV EDX,《计算机.00483E14

0047F42D B8 68F54700 MOV EAX,《计算机.0047F568 ; ASCII "XSEI.NATC"

0047F432 E8 216EFEFF CALL 《计算机.00466258

0047F437 833D 143E4800 0>CMP DWORD PTR DS:[483E14],0

0047F43E 74 04 JE SHORT 《计算机.0047F444

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



运行ImportREC,选择这个进程。把OEP改为7F404,点IT AutoSearch,点“Get Import”,看到输入表全部有效针,FixDump。



运行前看到加壳程序13.2M,脱壳程序668KB,肯定是无法运行的,这个是因为加壳程序尾部的数据没有复制到脱壳程序里面。



用Winhex打开加壳程序。



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



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



Crtl C 复制选定内容。



然后打开脱壳文件,直接滚动条到尾部偏移量684031处,点右键-编辑-剪贴板数据写入,确定两次,原理搞清楚就不犹豫,保存文件,运行正常。



短短的三次试用一会就过期了,先前没有用RegSnap给这个程序照相。



破解NAG吧。



下断点



Bp MessageBoxA



无法中断NAG,没办法



OD载入程序



0047F404 > $Content$nbsp; 55 PUSH EBP //入口点。

0047F405 . 8BEC MOV EBP,ESP

0047F407 . 83C4 F0 ADD ESP,-10

0047F40A . 53 PUSH EBX

0047F40B . B8 A4F14700 MOV EAX,《计算机.0047F1A4

0047F410 . E8 CF76F8FF CALL 《计算机.00406AE4

0047F415 . 33C0 XOR EAX,EAX

0047F417 . 55 PUSH EBP

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



这里想起风飘雪老师的加密和解密的实战功略里面对付NAG的方法。



那就是必杀Ctrl F8



简单解释一下,Ctrl F8自动步过,遇到Call中Call,然后Nag调用运行。



所以遇到Call停止后就下断点,不断Ctrl F2 和 F9 Ctrl F8 三键灵活使用。



0045A5D8 . E8 0396FAFF CALL 《计算机.00403BE0 //这个Call要调用两次。



0047F51A . E8 9125FEFF CALL 《计算机.00461AB0 //第一次 NAG,下断点重启再次中断,F7跟进,Ctrl F8 到下一个Call NAG出现。



00461AB0 $Content$nbsp; 55 PUSH EBP //跟进这里,Ctrl F8

00461AB1 . 8BEC MOV EBP,ESP

00461AB3 . 51 PUSH ECX

00461AB4 . 53 PUSH EBX

00461AB5 . 56 PUSH ESI

00461AB6 . 57 PUSH EDI

00461AB7 . 894D FC MOV DWORD PTR SS:[EBP-4],ECX

00461ABA . 8BDA MOV EBX,EDX

00461ABC . 8BF0 MOV ESI,EAX

00461ABE . 8BC3 MOV EAX,EBX



00461AE1 . FF57 2C CALL DWORD PTR DS:[EDI 2C] //第二次 NAG,下断点重启再次中断,F7跟进



0045A464 $Content$nbsp; 55 PUSH EBP //跟进这里,Ctrl F8

0045A465 . 8BEC MOV EBP,ESP

0045A467 . 81C4 ECFEFFFF ADD ESP,-114

0045A46D . 53 PUSH EBX

0045A46E . 33DB XOR EBX,EBX

0045A470 . 899D ECFEFFFF MOV DWORD PTR SS:[EBP-114],EBX

0045A476 . 84D2 TEST DL,DL

0045A478 . 74 08 JE SHORT 《计算机.0045A482

0045A47A . 83C4 F0 ADD ESP,-10

0045A47D . E8 0697FAFF CALL 《计算机.00403B88

0045A482 > 8BD9 MOV EBX,ECX



0045A5D8 . E8 0396FAFF CALL 《计算机.00403BE0 //第三次 NAG,下断点重启再次中断,F7跟进



0047BA46 . E8 2D200000 CALL 《计算机.0047DA78 //第四次 NAG,下断点重启再次中断,F7跟进



0047DD13 . E8 F8D1FBFF CALL 《计算机.0043AF10 //第五次 NAG,向上找到Magic jmp



整个过程就是吃卷心菜,一层层拨开。



0047DC4B . 3C 30 CMP AL,30 //千辛万苦找到的 Magic jmp,大家可以看OD的跳转线和单步跟踪最后一次Call的全部过程确定这是爆破点,必须跳转,刚好跳出死亡Call。

0047DC4D . 0F84 97010000 JE 《计算机.0047DDEA

0047DC53 . 3C 31 CMP AL,31

0047DC55 . 75 45 JNZ SHORT 《计算机.0047DC9C

0047DC57 . E8 68CAF8FF CALL 《计算机.0040A6C4

0047DC5C . 83C4 F8 ADD ESP,-8 ; /

0047DC5F . DD1C24 FSTP QWORD PTR SS:[ESP] ; |Arg3 (8-byte)

0047DC62 . 9B WAIT ; |

0047DC63 . FF75 FC PUSH DWORD PTR SS:[EBP-4] ; |Arg2

0047DC66 . FF75 F8 PUSH DWORD PTR SS:[EBP-8] ; |Arg1

0047DC69 . E8 72C8FFFF CALL 《计算机.0047A4E0 ; \《计算机.0047A4E0

0047DC6E . 3B05 9C3D4800 CMP EAX,DWORD PTR DS:[483D9C]

0047DC74 . 7E 26 JLE SHORT 《计算机.0047DC9C

0047DC76 . 6A 01 PUSH 1

0047DC78 . 8D45 CC LEA EAX,DWORD PTR SS:[EBP-34]

0047DC7B . 8B0D C03D4800 MOV ECX,DWORD PTR DS:[483DC0]

0047DC81 . 8B15 D03D4800 MOV EDX,DWORD PTR DS:[483DD0]

0047DC87 . E8 086CF8FF CALL 《计算机.00404894

0047DC8C . 8B55 CC MOV EDX,DWORD PTR SS:[EBP-34]

0047DC8F . B9 50DF4700 MOV ECX,《计算机.0047DF50 ; ASCII "eje"

0047DC94 . 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]

0047DC97 . E8 2877FFFF CALL 《计算机.004753C4

0047DC9C > A1 C43D4800 MOV EAX,DWORD PTR DS:[483DC4]

0047DCA1 . 8078 14 32 CMP BYTE PTR DS:[EAX 14],32

0047DCA5 . 75 2E JNZ SHORT 《计算机.0047DCD5

0047DCA7 . 3B35 A03D4800 CMP ESI,DWORD PTR DS:[483DA0]

0047DCAD . 7E 26 JLE SHORT 《计算机.0047DCD5

0047DCAF . 6A 01 PUSH 1

0047DCB1 . 8D45 C8 LEA EAX,DWORD PTR SS:[EBP-38]

0047DCB4 . 8B0D C03D4800 MOV ECX,DWORD PTR DS:[483DC0]

0047DCBA . 8B15 D03D4800 MOV EDX,DWORD PTR DS:[483DD0]

0047DCC0 . E8 CF6BF8FF CALL 《计算机.00404894

0047DCC5 . 8B55 C8 MOV EDX,DWORD PTR SS:[EBP-38]

0047DCC8 . B9 50DF4700 MOV ECX,《计算机.0047DF50 ; ASCII "eje"

0047DCCD . 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]

0047DCD0 . E8 EF76FFFF CALL 《计算机.004753C4

0047DCD5 > 6A 00 PUSH 0

0047DCD7 . 8D45 C4 LEA EAX,DWORD PTR SS:[EBP-3C]

0047DCDA . 8B0D C03D4800 MOV ECX,DWORD PTR DS:[483DC0]

0047DCE0 . 8B15 D03D4800 MOV EDX,DWORD PTR DS:[483DD0]

0047DCE6 . E8 A96BF8FF CALL 《计算机.00404894

0047DCEB . 8B55 C4 MOV EDX,DWORD PTR SS:[EBP-3C] ; |

0047DCEE . B9 50DF4700 MOV ECX,《计算机.0047DF50 ; |ASCII "eje"

0047DCF3 . 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C] ; |

0047DCF6 . E8 8576FFFF CALL 《计算机.00475380 ; \《计算机.00475380

0047DCFB . 84C0 TEST AL,AL

0047DCFD . 0F84 E7000000 JE 《计算机.0047DDEA

0047DD03 . 6A 00 PUSH 0 ; /Arg1 = 00000000

0047DD05 . 66:8B0D 54DF4>MOV CX,WORD PTR DS:[47DF54] ; |

0047DD0C . B2 02 MOV DL,2 ; |

0047DD0E . A1 B43D4800 MOV EAX,DWORD PTR DS:[483DB4] ; |

0047DD13 . E8 F8D1FBFF CALL 《计算机.0043AF10 ; \《计算机.0043AF10

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



继续努力搞退出NAG。



经龙哥指点



退出断点下



bp DestroyWindow



DestroyWindow 用途是



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



点不看了按钮,立即中断。



77DF736E > B8 59110000 MOV EAX,1159 //这里中断。

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

77DF7377 CD 2E INT 2E //如果返回看到这样的语句,必须Nop掉,不然Over

77DF7379 C2 0400 RETN 4



堆栈友好提示



0012F9DC 00445769 /CALL 到 DestroyWindow 来自 Crack.00445764 //这里清除断点,Ctrl F9返回。

0012F9E0 001104A0 \hWnd = 001104A0 (’计算机资料大全v3.0 火力加强版’,class=’TMessageForm’,parent=000404BC)

0012F9E4 0012FBCC 指针到下一个 SEH 记录

0012F9E8 00445789 SE 句柄

0012F9EC 0012F9F4



00445769 . 85C0 TEST EAX,EAX

0044576B . 75 05 JNZ SHORT Crack.00445772

0044576D . E8 A283FCFF CALL Crack.0040DB14

00445772 > 33C0 XOR EAX,EAX

00445774 . 5A POP EDX

00445775 . 59 POP ECX

00445776 . 59 POP ECX

00445777 . 64:8910 MOV DWORD PTR FS:[EAX],EDX

0044577A . 68 90574400 PUSH Crack.00445790

0044577F > 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

00445782 . 66:8160 54 FF>AND WORD PTR DS:[EAX 54],0FDFF

00445788 . C3 RETN



不断 Ctrl F9返回。



0043AFCF |> \8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]

0043AFD2 |. 8B10 MOV EDX,DWORD PTR DS:[EAX]

0043AFD4 |. FF92 E8000000 CALL DWORD PTR DS:[EDX E8] //F7进入。



0045E754 /. 55 PUSH EBP //进这里。

0045E755 |. 8BEC MOV EBP,ESP

0045E757 |. 83C4 E0 ADD ESP,-20

0045E75A |. 53 PUSH EBX

0045E75B |. 56 PUSH ESI

0045E75C |. 33D2 XOR EDX,EDX

0045E75E |. 8955 E0 MOV DWORD PTR SS:[EBP-20],EDX

0045E761 |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX

0045E764 |. BB 2C3C4800 MOV EBX,Crack.00483C2C

0045E769 |. 33C0 XOR EAX,EAX

0045E76B |. 55 PUSH EBP

0045E76C |. 68 E4E94500 PUSH Crack.0045E9E4

0045E771 |. 64:FF30 PUSH DWORD PTR FS:[EAX]

0045E774 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP

0045E777 |. E8 481CFEFF CALL Crack.004403C4

0045E77C |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

0045E77F |. 8078 57 00 CMP BYTE PTR DS:[EAX 57],0

0045E783 |. 75 24 JNZ SHORT Crack.0045E7A9

0045E785 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

0045E788 |. 8B10 MOV EDX,DWORD PTR DS:[EAX]

0045E78A |. FF52 50 CALL DWORD PTR DS:[EDX 50]

0045E78D |. 84C0 TEST AL,AL

0045E78F |. 74 18 JE SHORT Crack.0045E7A9

0045E791 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

0045E794 |. F680 EC020000>TEST BYTE PTR DS:[EAX 2EC],8

0045E79B |. 75 0C JNZ SHORT Crack.0045E7A9

0045E79D |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

0045E7A0 |. 80B8 2F020000>CMP BYTE PTR DS:[EAX 22F],1

0045E7A7 |. 75 21 JNZ SHORT Crack.0045E7CA



0045E7CA |> E8 698AFAFF CALL ; [GetCapture

0045E7CF |. 85C0 TEST EAX,EAX

0045E7D1 |. 74 11 JE SHORT Crack.0045E7E4



0045E7E4 |> E8 D78CFAFF CALL ; [ReleaseCapture

0045E7E9 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

0045E7EC |. 8088 EC020000>OR BYTE PTR DS:[EAX 2EC],8

0045E7F3 |. E8 388AFAFF CALL ; [GetActiveWindow

0045E7F8 |. 8945 E4 MOV DWORD PTR SS:[EBP-1C],EAX

0045E7FB |. A1 9C0D4800 MOV EAX,DWORD PTR DS:[480D9C]

0045E800 |. 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX

0045E803 |. A1 303C4800 MOV EAX,DWORD PTR DS:[483C30]

0045E808 |. 8B48 78 MOV ECX,DWORD PTR DS:[EAX 78]

0045E80B |. A1 303C4800 MOV EAX,DWORD PTR DS:[483C30]

0045E810 |. 8B40 7C MOV EAX,DWORD PTR DS:[EAX 7C]

0045E813 |. 33D2 XOR EDX,EDX

0045E815 |. E8 46CAFBFF CALL Crack.0041B260

0045E81A |. A1 303C4800 MOV EAX,DWORD PTR DS:[483C30]

0045E81F |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]

0045E822 |. 8950 78 MOV DWORD PTR DS:[EAX 78],EDX

0045E825 |. A1 303C4800 MOV EAX,DWORD PTR DS:[483C30]

0045E82A |. 66:8B40 44 MOV AX,WORD PTR DS:[EAX 44]

0045E82E |. 66:8945 EE MOV WORD PTR SS:[EBP-12],AX

0045E832 |. 33D2 XOR EDX,EDX

0045E834 |. A1 303C4800 MOV EAX,DWORD PTR DS:[483C30]

0045E839 |. E8 7E130000 CALL Crack.0045FBBC

0045E83E |. A1 303C4800 MOV EAX,DWORD PTR DS:[483C30]

0045E843 |. 8B40 48 MOV EAX,DWORD PTR DS:[EAX 48]

0045E846 |. 8945 E8 MOV DWORD PTR SS:[EBP-18],EAX

0045E849 |. 33C0 XOR EAX,EAX

0045E84B |. E8 E4A2FFFF CALL Crack.00458B34

0045E850 |. 8945 F4 MOV DWORD PTR SS:[EBP-C],EAX

0045E853 |. 33D2 XOR EDX,EDX

0045E855 |. 55 PUSH EBP

0045E856 |. 68 C4E94500 PUSH Crack.0045E9C4

0045E85B |. 64:FF32 PUSH DWORD PTR FS:[EDX]

0045E85E |. 64:8922 MOV DWORD PTR FS:[EDX],ESP

0045E861 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

0045E864 |. E8 3BFEFFFF CALL Crack.0045E6A4

0045E869 |. 33D2 XOR EDX,EDX

0045E86B |. 55 PUSH EBP

0045E86C |. 68 23E94500 PUSH Crack.0045E923

0045E871 |. 64:FF32 PUSH DWORD PTR FS:[EDX]

0045E874 |. 64:8922 MOV DWORD PTR FS:[EDX],ESP

0045E877 |. 6A 00 PUSH 0

0045E879 |. 6A 00 PUSH 0

0045E87B |. 68 00B00000 PUSH 0B000

0045E880 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

0045E883 |. E8 D499FEFF CALL Crack.0044825C

0045E888 |. 50 PUSH EAX ; |hWnd

0045E889 |. E8 728CFAFF CALL ; \SendMessageA

0045E88E |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

0045E891 |. 33D2 XOR EDX,EDX

0045E893 |. 8990 4C020000 MOV DWORD PTR DS:[EAX 24C],EDX

0045E899 |> 8B03 /MOV EAX,DWORD PTR DS:[EBX] --------------------------

0045E89B |. E8 FC300000 |CALL Crack.0046199C

0045E8A0 |. 8B03 |MOV EAX,DWORD PTR DS:[EBX]

0045E8A2 |. 80B8 9C000000>|CMP BYTE PTR DS:[EAX 9C],0

0045E8A9 |. 74 0F |JE SHORT Crack.0045E8BA



0045E8BA |> 8B45 FC |MOV EAX,DWORD PTR SS:[EBP-4] 里面构成一个循环,在循环里面NAG出现了,只能人为关闭。

0045E8BD |. 83B8 4C020000>|CMP DWORD PTR DS:[EAX 24C],0

0045E8C4 |. 74 08 |JE SHORT Crack.0045E8CE



0045E8CE |> 8B45 FC |MOV EAX,DWORD PTR SS:[EBP-4]

0045E8D1 |. 8B80 4C020000 |MOV EAX,DWORD PTR DS:[EAX 24C]

0045E8D7 |. 85C0 |TEST EAX,EAX

0045E8D9 |.^ 74 BE \JE SHORT Crack.0045E899 ----------------------------



//人为关闭同样是到达下面一句,如果爆破的话,NAG窗口在你眼睛没看见的时候就关闭了,我的P4 2G的Cpu我根本没看见NAG,这里就是第二个爆破点。



0045E8DB |. 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX

0045E8DE |. 6A 00 PUSH 0

0045E8E0 |. 6A 00 PUSH 0

0045E8E2 |. 68 01B00000 PUSH 0B001

...............................................// 往下正常Over.



【破解总结】



0047DC4D . 0F84 97010000 JE 0047DDEA



修改为



0047DC4D . 0F85 97010000 JnE 0047DDEA





0045E8D9 |.^ 74 BE \JE SHORT Crack.0045E899



修改为



0045E8D9 |.^ 75 BE \JNE SHORT Crack.0045E899



第二处强力爆破后,启动Nag一起搞调了,原来它们是调用的同一个语句,程序帮我们Kill掉了(自动关闭)




最新评论

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

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

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部