吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11669|回复: 26
收起左侧

unpackme适合新手玩

[复制链接]
小生我怕怕 发表于 2009-1-23 19:12
CM是什么?Crackme是什么?这是什么东西?楼主发的什么?
他们都是一些公开给别人尝试破解的小程序,制作 Crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 Cracker,想挑战一下其它 Cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破解,KeyGenMe是要求别人做出它的 keygen (序号产生器), ReverseMe 要求别人把它的算法做出逆向分析, UnpackMe 是要求别人把它成功脱壳,本版块禁止回复非技术无关水贴。

程序是一工具,至于是什么壳暂时不得而知,但是有些好玩,有兴趣的下去爽下手!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

johway 发表于 2009-1-23 19:41
- -!!!!


偶像!!


膜拜!!

3秒钟
lysfond 发表于 2009-1-23 19:55
wbz_007 发表于 2009-1-23 20:01
 楼主| 小生我怕怕 发表于 2009-1-23 21:10
当我们拿到一个程序时,我们可以借助程序的支持库来判断程序是什么语言,由为明显的是VB的运行库和易语言的运行库,还有MFC的支持库当我们载入OD运行起程序,ait+e可以明显看出是
什么语言的支持库,从而判断出我们程序的编写语言,现在我们就来简单的熟悉下VB的入口特征熟悉VB语言入口特征的朋友都应该知道VB的入口是很容易发现的,下面我简单的找个VB的入口
来进行一个简单的比对
00401166  - FF25 6C104000   JMP DWORD PTR DS:[<&MSVBVM60.#100>]      ; MSVBVM60.ThunRTMain
0040116C >  68 147C4000     PUSH PACKME.00407C14                        //很明显我们可以看得出VB上面有一堆JMP
00401171    E8 F0FFFFFF     CALL <JMP.&MSVBVM60.#100>                   //接着就是一个PUSH,一个CALL
00401176    0000            ADD BYTE PTR DS:[EAX],AL                    //而CALL的就是我们PUSH上面的一个JMP   
00401178    0000            ADD BYTE PTR DS:[EAX],AL                    //好啦,现在我们开始正式脱壳,载入需脱壳文件
0040117A    0000            ADD BYTE PTR DS:[EAX],AL
0040117C    3000            XOR BYTE PTR DS:[EAX],AL
━━━━━━━━━━━━━━━━━━━━━━━━━━
00412DEC >  60              pushad                                      //入口伪装了我们的UPX的入口
00412DED    BE B4264000     mov esi,TrashReg.004026B4                   //我们用Die64可以发现是C++写的
00412DF2    8DBE EBAFFFFF   lea edi,dword ptr ds:[esi+FFFFAFEB]         //简单的可以发现我们的程序还有不少伪装
00412DF8    57              push edi                                    //下断bp VirtualAlloc
00412DF9    83CD FF         or ebp,FFFFFFFF                             //shift+f9运行第九次时发现程序缓冲有些大
00412DFC    EB 10           jmp short TrashReg.00412E0E
━━━━━━━━堆栈显示━━━━━━━━━━━━
0012FBE0   73444CBA  /CALL 到 VirtualAlloc 来自 MSVBVM60.73444CB8       //当堆栈显示为这样时,我们可以ait+f9返回
0012FBE4   00000000  |Address = NULL
0012FBE8   00010000  |Size = 10000 (65536.)
0012FBEC   00002000  |AllocationType = MEM_RESERVE
0012FBF0   00000004  \Protect = PAGE_READWRITE
0012FBF4   7354EC40  MSVBVM60.7354EC40
━━━━━━━━━━━━━━━━━━━━━━━━━━
73653803    8BFF            mov edi,edi                                 //返回后我们还是停在了我们的系统领空
73653805    55              push ebp                                    //ait+m打开我们的内存镜像
73653806    8BEC            mov ebp,esp
73653808    E8 D90CFFFF     call 736444E6
7365380D    85C0            test eax,eax
7365380F    74 11           je short 73653822
━━━━━━━━━━━━━━━━━━━━━━━━━━
内存映射,项目 23                                                      //在此F2下断,shift+f9运行
地址=00401000                                                         
大小=0006C000 (442368.)
物主=TrashReg 00400000
区段=.000000
包含=code
类型=Imag 01001002
访问=R
初始访问=RWE
━━━━━━━━━━━━━━━━━━━━━━━━━━
734438E1    85C0            test eax,eax                              //此时注意我们的堆栈窗口
734438E3    8945 FC         mov dword ptr ss:[ebp-4],eax
734438E6    7C 74           jl short MSVBVM60.7344395C
734438E8    F647 3C 01      test byte ptr ds:[edi+3C],1
734438EC    6A 02           push 2
734438EE    58              pop eax
━━━━━━━━━━━━━━━━━━━━━━━━━━
0012FEDC   00404BBC  ASCII "VB5!6&*"                                 //可以看到我们的push的地址
0012FEE0   7354E470  MSVBVM60.7354E470                               //Ctrl+g查找00404bbc
0012FEE4   014D1E94
0012FEE8   00000000
0012FEEC  /0012FF0C
━━━━━━━━━━━━━━━━━━━━━━━━━━
00404BBC    56              push esi                                 //我们到了这里,右键Ctrl+b查找二进制FF25
00404BBD    42              inc edx
00404BBE    35 2136262A     xor eax,2A263621
00404BC3    0000            add byte ptr ds:[eax],al
00404BC5    0000            add byte ptr ds:[eax],al
00404BC7    0000            add byte ptr ds:[eax],al
00404BC9    0000            add byte ptr ds:[eax],al
━━━━━━━━━━━━━━━━━━━━━━━━━━
004042DF    00FF            add bh,bh                                  //到了这里,我们向下拉到下面的第一个JMP
004042E1    25 68114000     and eax,401168                             
004042E6  - FF25 08124000   jmp dword ptr ds:[401208]                ; MSVBVM60.__vbaExceptHandler
004042EC  - FF25 38124000   jmp dword ptr ds:[401238]                ; MSVBVM60.__vbaFPException
004042F2  - FF25 10114000   jmp dword ptr ds:[401110]                ; MSVBVM60._adj_fdiv_m16i
004042F8  - FF25 D8104000   jmp dword ptr ds:[4010D8]                ; MSVBVM60._adj_fdiv_m32
004042FE  - FF25 A8124000   jmp dword ptr ds:[4012A8]                ; MSVBVM60._adj_fdiv_m32i
━━━━━━━━━━━━━━━━━━━━━━━━━━
00404844  - FF25 04124000   jmp dword ptr ds:[401204]                ; MSVBVM60.EVENT_SINK_QueryInterface
0040484A  - FF25 7C114000   jmp dword ptr ds:[40117C]                ; MSVBVM60.EVENT_SINK_AddRef
00404850  - FF25 EC114000   jmp dword ptr ds:[4011EC]                ; MSVBVM60.EVENT_SINK_Release
00404856  - FF25 E4124000   jmp dword ptr ds:[4012E4]                ; MSVBVM60.ThunRTMain
0040485C    BC C094692B     mov esp,2B6994C0                         //这里就是我们的push
00404861    95              xchg eax,ebp                             //这里就是我们的CALL
00404862    F4              hlt                                      //而我们的PUSH可以在堆栈里看到
00404863    E8 03610000     call TrashReg.0040A96B
00404868    0000            add byte ptr ds:[eax],al
0040486A    0000            add byte ptr ds:[eax],al
━━━━━━━━━━━━━━━━━━━━━━━━━━
0012FEDC   00404BBC  ASCII "VB5!6&*"                                 //这里就是我们的push
0012FEE0   7354E470  MSVBVM60.7354E470                               //好补全我们的OEP吧
0012FEE4   014D1E94
0012FEE8   00000000
━━━━━━━━━━━━━━━━━━━━━━━━━━
00404850  - FF25 EC114000   jmp dword ptr ds:[4011EC]                ; MSVBVM60.EVENT_SINK_Release
00404856  - FF25 E4124000   jmp dword ptr ds:[4012E4]                ; MSVBVM60.ThunRTMain
0040485C    68 BC4B4000     push TrashReg.00404BBC                   ; ASCII "VB5!6&*"
00404861    E8 F0FFFFFF     call TrashReg.00404856                   ; jmp to MSVBVM60.ThunRTMain
00404866    90              nop                                      //这里是补好的OEP
00404867    90              nop                                      //CALL的地址是00404856,也就是最后的那个JMP
00404868    0000            add byte ptr ds:[eax],al                 //好记下我们需要修复的地址,在最后的JMP处下硬件访问断点
0040486A    0000            add byte ptr ds:[eax],al                 //点在00404856处,右键断点---设置硬件访问断点,
0040486C    3000            xor byte ptr ds:[eax],al                 //从新载入程序,shift+f9运行程序
0040486E    0000            add byte ptr ds:[eax],al
━━━━━━━━━━━━━━━━━━━━━━━━━━
00404856  - FF25 E4124000   jmp dword ptr ds:[4012E4]                //程序停在这里,在下面的PUSH上,右键新建EIP
0040485C    68 BC4B4000     push TrashReg.00404BBC                   ; ASCII "VB5!6&*"
00404861    E8 F0FFFFFF     call TrashReg.00404856                   //补好后运行我们的LordPE把程序DUMP,当然也可以直接用importRCE去DUMP
00404866    90              nop                                      //如果是LordPE去DUMP的,就还需要importRCE修复下
00404867    90              nop                                      //到此脱壳结束
00404868    0000            add byte ptr ds:[eax],al
0040486A    0000            add byte ptr ds:[eax],al


[ 本帖最后由 小生我怕怕 于 2009-1-27 14:09 编辑 ]
wgz001 发表于 2009-1-23 21:53
楼主太强了    不知道这个方法能不能通用此类语言的程序   
ximo 发表于 2009-1-23 22:49
原帖由 wgz001 于 2009-1-23 21:53 发表
楼主太强了    不知道这个方法能不能通用此类语言的程序   


不能
小糊涂虫 发表于 2009-1-25 07:57
郁闷之中,不太懂。

[ 本帖最后由 小糊涂虫 于 2009-1-26 12:12 编辑 ]
samisgod 发表于 2009-1-26 09:52
经典DotFix NiceProtect入口...
wgz001 发表于 2009-1-26 10:51
原帖由 小糊涂虫 于 2009-1-25 07:57 发表
这个壳我一通乱脱。。。。。
脱壳后,有5M之多,可以正常运行。。但是用OD查不了字符。。。
请高人检查一下,是否脱壳正常。。。。。
11911


程序是VB的  
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 04:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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