吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 26233|回复: 68
收起左侧

[分享] 真正的菜鸟的第一脱——UPX 0.89.6 - 1.02 / 1.05 - 1.24

    [复制链接]
realright 发表于 2010-3-13 16:23
本帖最后由 realright 于 2010-3-13 16:45 编辑

真正的菜鸟的第一脱——UPX 0.89.6 - 1.02 / 1.05 - 1.24

别的不多说,我菜,你们想不到的菜:
汇编,什么破代码,我不懂;
VB, 好吧我知道,dim啥啥,其他一遍闪;
C,知道一个for,一个choose,一个while,其他同上;
然后,其他就是白痴一个了!

但是,这个不妨碍,我学!脱吧,壳嘛,大不了单步!

今天我来脱一个,这是看了一天的论坛,按大侠们教的!

工具:OllyICE,peid,ImpREC,upx加壳软件
软件:uxp 加壳的 notepad.exe
文件名:upx_jsb   jsb(就是记事本的意思)

1 查壳
peid拿来:
1.jpg

2 脱壳
od载入,显示如下代码:
01014260 > $  60            pushad                                              //f8一路往下走
01014261   .  BE 00000101   mov     esi, 01010000
01014266   .  8DBE 0010FFFF lea     edi, dword ptr [esi+FFFF1000]
0101426C   .  57            push    edi
0101426D   .  83CD FF       or      ebp, FFFFFFFF
01014270   .  EB 10         jmp     short 01014282                        //往下跳的,允许了
01014272      90            nop
01014273      90            nop
01014274      90            nop
01014275      90            nop
01014276      90            nop
01014277      90            nop
01014278   >  8A06          mov     al, byte ptr [esi]
0101427A   .  46            inc     esi
0101427B   .  8807          mov     byte ptr [edi], al
0101427D   .  47            inc     edi
0101427E   >  01DB          add     ebx, ebx
01014280   .  75 07         jnz     short 01014289
01014282   >  8B1E          mov     ebx, dword ptr [esi]               //跳到这,继续f8
01014284   .  83EE FC       sub     esi, -4
01014287   .  11DB          adc     ebx, ebx
01014289   >^ 72 ED         jb      short 01014278    //到这里,这个也是跳,我不懂,但跑几次后,发现老是往上回 到01014278,那就f4跳过
0101428B   .  B8 01000000   mov     eax, 1
01014290   >  01DB          add     ebx, ebx
01014292   .  75 07         jnz     short 0101429B                                  //往下,允许了
01014294   .  8B1E          mov     ebx, dword ptr [esi]
01014296   .  83EE FC       sub     esi, -4
01014299   .  11DB          adc     ebx, ebx
0101429B   >  11C0          adc     eax, eax
0101429D   .  01DB          add     ebx, ebx
0101429F   .^ 73 EF         jnb     short 01014290                               //没有实现跳,继续
010142A1   .  75 09         jnz     short 010142AC                                  //往下,好继续
010142A3   .  8B1E          mov     ebx, dword ptr [esi]
010142A5   .  83EE FC       sub     esi, -4
010142A8   .  11DB          adc     ebx, ebx
010142AA   .^ 73 E4         jnb     short 01014290                  
010142AC   >  31C9          xor     ecx, ecx
010142AE   .  83E8 03       sub     eax, 3
010142B1   .  72 0D         jb      short 010142C0                                //往下的
010142B3   .  C1E0 08       shl     eax, 8
010142B6   .  8A06          mov     al, byte ptr [esi]
010142B8   .  46            inc     esi
010142B9   .  83F0 FF       xor     eax, FFFFFFFF
010142BC   .  74 74         je      short 01014332
010142BE   .  89C5          mov     ebp, eax
010142C0   >  01DB          add     ebx, ebx
010142C2   .  75 07         jnz     short 010142CB                         //往下的
010142C4   .  8B1E          mov     ebx, dword ptr [esi]
010142C6   .  83EE FC       sub     esi, -4
010142C9   .  11DB          adc     ebx, ebx
010142CB   >  11C9          adc     ecx, ecx                                    //到这了
010142CD   .  01DB          add     ebx, ebx
010142CF   .  75 07         jnz     short 010142D8                          //又是往下
010142D1   .  8B1E          mov     ebx, dword ptr [esi]
010142D3   .  83EE FC       sub     esi, -4
010142D6   .  11DB          adc     ebx, ebx
010142D8   >  11C9          adc     ecx, ecx                                      //到这了,继续
010142DA   .  75 20         jnz     short 010142FC                             //这个跳没有实现,继续
010142DC   .  41            inc     ecx
010142DD   >  01DB          add     ebx, ebx
010142DF   .  75 07         jnz     short 010142E8                              //往下,继续
010142E1   .  8B1E          mov     ebx, dword ptr [esi]
010142E3   .  83EE FC       sub     esi, -4
010142E6   .  11DB          adc     ebx, ebx
010142E8   >  11C9          adc     ecx, ecx                                           //到这了
010142EA   .  01DB          add     ebx, ebx
010142EC   .^ 73 EF         jnb     short 010142DD                              //这个往上,f4过去往下走
010142EE   .  75 09         jnz     short 010142F9                                  //往下的,走
010142F0   .  8B1E          mov     ebx, dword ptr [esi]
010142F2   .  83EE FC       sub     esi, -4
010142F5   .  11DB          adc     ebx, ebx
010142F7   .^ 73 E4         jnb     short 010142DD
010142F9   >  83C1 02       add     ecx, 2                                            //到这,走
010142FC   >  81FD 00F3FFFF cmp     ebp, -0D00
01014302   .  83D1 01       adc     ecx, 1
01014305   .  8D142F        lea     edx, dword ptr [edi+ebp]
01014308   .  83FD FC       cmp     ebp, -4
0101430B   .  76 0F         jbe     short 0101431C                                  //没有跳,走下去
0101430D   > /8A02          mov     al, byte ptr [edx]
0101430F   . |42            inc     edx
01014310   . |8807          mov     byte ptr [edi], al
01014312   . |47            inc     edi
01014313   . |49            dec     ecx
01014314   .^\75 F7         jnz     short 0101430D                       //到这,要跳回去
01014316   .^ E9 63FFFFFF   jmp     0101427E                           //这个也是要回去,全部f4过去
0101431B      90            nop
0101431C   >  8B02          mov     eax, dword ptr [edx]              //从这个f8下去
0101431E   .  83C2 04       add     edx, 4
01014321   .  8907          mov     dword ptr [edi], eax
01014323   .  83C7 04       add     edi, 4
01014326   .  83E9 04       sub     ecx, 4
01014329   .^ 77 F1         ja      short 0101431C                        //也没有实现跳,走吧往下
0101432B   .  01CF          add     edi, ecx
0101432D   .^ E9 4CFFFFFF   jmp     0101427E                           //到这,要往回跳,f4过去
01014332   >  5E            pop     esi
01014333   .  89F7          mov     edi, esi
01014335   .  B9 32010000   mov     ecx, 132
0101433A   >  8A07          mov     al, byte ptr [edi]
0101433C   .  47            inc     edi
0101433D   .  2C E8         sub     al, 0E8
0101433F   >  3C 01         cmp     al, 1
01014341   .^ 77 F7         ja      short 0101433A                         //这是要往上,不让你跳
01014343   .  803F 01       cmp     byte ptr [edi], 1
01014346   .^ 75 F2         jnz     short 0101433A                        //这个也想回去,照旧不让跳
01014348   .  8B07          mov     eax, dword ptr [edi]
0101434A   .  8A5F 04       mov     bl, byte ptr [edi+4]
0101434D   .  66:C1E8 08    shr     ax, 8
01014351   .  C1C0 10       rol     eax, 10
01014354   .  86C4          xchg    ah, al
01014356   .  29F8          sub     eax, edi
01014358   .  80EB E8       sub     bl, 0E8
0101435B   .  01F0          add     eax, esi
0101435D   .  8907          mov     dword ptr [edi], eax
0101435F   .  83C7 05       add     edi, 5
01014362   .  89D8          mov     eax, ebx
01014364   .^ E2 D9         loopd   short 0101433F                           //一路走到这,好像是个循环,不能回去,f4过掉
01014366   .  8DBE 00200100 lea     edi, dword ptr [esi+12000]
0101436C   >  8B07          mov     eax, dword ptr [edi]
0101436E   .  09C0          or      eax, eax
01014370   .  74 3C         je      short 010143AE                               //跳转没有实现,继续走
01014372   .  8B5F 04       mov     ebx, dword ptr [edi+4]
01014375   .  8D8430 14AE01>lea     eax, dword ptr [eax+esi+1AE14]
0101437C   .  01F3          add     ebx, esi
0101437E   .  50            push    eax
0101437F   .  83C7 08       add     edi, 8
01014382   .  FF96 DCAE0100 call    dword ptr [esi+1AEDC]      //走到这,call啥,好像是个loadlibarya啥玩意,朦朦胧胧地觉得这就可以
                                                       //下断点的地方,什么原理嘛?嘛玩意嘛?反正都不懂,随便你了,走吧往下

01014388   .  95            xchg    eax, ebp
01014389   >  8A07          mov     al, byte ptr [edi]
0101438B   .  47            inc     edi
0101438C   .  08C0          or      al, al
0101438E   .^ 74 DC         je      short 0101436C                          //往上跳的,没有实现,下走
01014390   .  89F9          mov     ecx, edi
01014392   .  57            push    edi
01014393   .  48            dec     eax
01014394   .  F2:AE         repne   scas byte ptr es:[edi]
01014396   .  55            push    ebp
01014397   .  FF96 E0AE0100 call    dword ptr [esi+1AEE0]   //又是call,这玩意尽欺负人,下吧--!(getprocaddress,下断点用的?
                                                               //大牛们老提到这个的,郁闷,这就是什么都不懂的坏处!杯具…)
0101439D   .  09C0          or      eax, eax
0101439F   .  74 07         je      short 010143A8                      //没有实现,下
010143A1   .  8903          mov     dword ptr [ebx], eax
010143A3   .  83C3 04       add     ebx, 4
010143A6   .^ EB E1         jmp     short 01014389  //这个往上,不让你回。但是,我f4不管用了,它直接就运行了,郁闷!
                                                        //重新上述步骤,来到此处!往下一看,嘿有popad,这是什么出口,
                                                        //说是到这了,就是壳解压完了!我f4直接到那里去算了
010143A8   >  FF96 E4AE0100 call    dword ptr [esi+1AEE4]
010143AE   >  61            popad                                                //f4到这里了,走,下了
010143AF   .- E9 E92FFFFF   jmp     0100739D                   //跳很远的,貌似就是他们所说的什么入口点前的跳入了,跟进!结果如下:



大跳后的代码:
0100739D    6A 70           push    70                            //难道这里就可以新建eip?不懂,试试吧!结果出现提示:可疑的什么玩意,不懂,
                                                                            //继续我的事!插件dump,什么不改,确认,保存为1.exe
                                                                       //好了,这回我们去看看什么玩意吧,那个1.exe !!!!希望可以
0100739F    68 98180001     push    01001898
010073A4    E8 BF010000     call    01007568
010073A9    33DB            xor     ebx, ebx
010073AB    53              push    ebx
010073AC    8B3D CC100001   mov     edi, dword ptr [10010CC]         ; kernel32.GetModuleHandleA
010073B2    FFD7            call    edi
010073B4    66:8138 4D5A    cmp     word ptr [eax], 5A4D
010073B9    75 1F           jnz     short 010073DA

桌面双击1.exe,哇,我们熟悉的记事本出来了!
peid查壳一下:什么深度、核心啊,都是一样的结果,看来我们成功了!呵呵
2.jpg

什么深度、核心啊,都是一样的结果,看来我们成功了!呵呵!
可以啊,我们菜鸟什么都不懂的,也可以啊!

可惜,后来看了一下,都是upx是最简单的,难怪了!嗯,算了,毕竟咱也菜,才第一天,就不苛刻自己了!


这个以下是加过壳的和脱过壳的东东,要的话自己下!后缀自己改一下,我是为了方便上传加了后缀的!
Upx_JSB.exe.rar (46.5 KB, 下载次数: 113)
1.exe.rar (120 KB, 下载次数: 90)

免费评分

参与人数 1热心值 +1 收起 理由
wangyaxu + 1 都是新手,知道的。

查看全部评分

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

zhourongjun1227 发表于 2014-3-22 11:54
简单的按照教程操作就可以了
Carlton 发表于 2014-3-20 12:58
ESP定律不好使
楼主你这个方法也不行啊
jmp大跳 跳到的不是入口
ll2323001 发表于 2010-3-13 17:13
654902893 发表于 2010-3-13 17:21
学习学习,都是新手哦,呵呵:hug:
疯子韩 发表于 2010-3-17 22:42
其实UPX直接往下找到空代码上面就有一个远跳,F4,直接跟进去就是OEP了,呵呵,我也菜菜
jjzb2003 发表于 2010-3-18 10:00
谢谢提供,我这么好的方法!
一丁 发表于 2010-3-18 11:32
好 方法。。顶。。
秋风夜雪 发表于 2010-3-18 11:35
新手学习!!
nuojiya8 发表于 2010-3-18 13:42
比我强多了。
zhou_wei 发表于 2010-3-18 23:58
我也来学习了.
zhlmhy 发表于 2010-3-19 00:35
看不懂啊.. 一直在跳.怎么没有注释啊
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-5-11 04:58

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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