飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 5414|回复: 10

aspr2.3 bulid 04.26脱壳方法初探

[复制链接]
  • TA的每日心情
    开心
    2022-11-22 20:08
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2006-5-9 12:11:44 | 显示全部楼层 |阅读模式
    aspr2.3 bulid 04.26脱壳方法初探

    首先感谢8100303关于aspr2.3 bulid 04.26的教程。

    在aspr2.3 bulid 04.26中增加了rtdsc,用以前版本脱壳方法不行了。
    在学习教程的过程中,我这样的初学者很难找到切入点,不知道如何下手调试。现把我在开始脱壳的开始部分的笔记整

    理出来,请各位高手能指点修改完善。

    后面的过程我还不会,正在摸索中。
    =========================================================================================================
    一、用Anti-rdtsc工具法。

    感谢shoooo给我们提供了一个Anti-rdtsc工具,使调试变的容易。

    shoooo是这样解释这个工具:
    “在0环中修改cr4寄存器中的1位,会使rtdsc指令变成特权指令,这样,当程序碰到rtdsc时就会产生异常
    这时,我们可以写od插件,抓到这个异常,并给eax,edx可控制的值, 让程序继续跑。”。

    运行Anti-rdtsc工具,按“SET RDTSC CPLO”。

    忽略除“内存异常”和下面的“同时忽略以下指定的异常或者异常范围”,其他选项全选。

    00401000 >  68 01E04000      push notpad42.0040E001               ; OD入口
    00401005    E8 01000000      call notpad42.0040100B
    0040100A    C3               retn
    0040100B    C3               retn

    Shirt+F9,三次异常。

    009CC91A    0000             add byte ptr ds:[eax],al
    009CC91C    E8 33C05A59      call 59F78954
    009CC921    59               pop ecx
    009CC922    64:8910          mov dword ptr fs:[eax],edx
    009CC925    EB 2B            jmp short 009CC952

    Alt+M,到内存窗口,在CODE段下F2中断。Shirt+F9,就来到这里了。

    009CB2FB    8945 00          mov dword ptr ss:[ebp],eax
    009CB2FE    6A 0A            push 0A
    009CB300    E8 B3A9FDFF      call 009A5CB8
    009CB305    8BC8             mov ecx,eax
    009CB307    038B E4000000    add ecx,dword ptr ds:[ebx+E4]
    009CB30D    8BD6             mov edx,esi
    009CB30F    8BC3             mov eax,ebx
    009CB311    E8 AAE6FFFF      call 009C99C0

    F8步进到来到这里。

    009CB19B    33C0             xor eax,eax
    009CB19D    8A47 09          mov al,byte ptr ds:[edi+9]
    009CB1A0    8D0440           lea eax,dword ptr ds:[eax+eax*2]
    009CB1A3    8B5483 68        mov edx,dword ptr ds:[ebx+eax*4+68]
    009CB1A7    8BC6             mov eax,esi
    009CB1A9    FFD2             call edx
    009CB1AB    807B 20 00       cmp byte ptr ds:[ebx+20],0
    009CB1AF    0F85 3D010000    jnz 009CB2F2
    009CB1B5    3C 01            cmp al,1
    009CB1B7    0F85 35010000    jnz 009CB2F2
    009CB1BD    EB 01            jmp short 009CB1C0

    Ctrl+B,查找字符串:33C08A078D04408B6C83688BC6

    009CB171    8D7B 40          lea edi,dword ptr ds:[ebx+40]
    009CB174    833C24 00        cmp dword ptr ss:[esp],0
    009CB178    0F86 AB010000    jbe 009CB329                         ; F2,在这里下断,F9。
    009CB17E    33C0             xor eax,eax                          ; 找到这里,向下看。
    009CB180    8A07             mov al,byte ptr ds:[edi]
    009CB182    8D0440           lea eax,dword ptr ds:[eax+eax*2]
    009CB185    8B6C83 68        mov ebp,dword ptr ds:[ebx+eax*4+68]
    009CB189    8BC6             mov eax,esi
    009CB18B    FFD5             call ebp
    009CB18D    8BE8             mov ebp,eax
    009CB18F    036B 24          add ebp,dword ptr ds:[ebx+24]
    009CB192    03AB E0000000    add ebp,dword ptr ds:[ebx+E0]
    009CB198    EB 01            jmp short 009CB19B
    009CB19A    E8 33C08A47      call 482771D2
    009CB19F    098D 04408B54    or dword ptr ss:[ebp+548B4004],ecx
    009CB1A5    8368 8B C6       sub dword ptr ds:[eax-75],-3A
    009CB1A9    FFD2             call edx                             ; call edx-->jmp xxxxxxxx
    009CB1AB    807B 20 00       cmp byte ptr ds:[ebx+20],0
    009CB1AF    0F85 3D010000    jnz 009CB2F2

    到009CB178中断后,F4直接到009CB1A9,ESP中是函数数量。

    用HideOD申请内存。得到01430000。

    修改009CB1A9,call edx-->jmp 01430000。

    下面是8100303的PATCH代码,感谢他的教程。

    F8步进到申请内存01430000,键入以下代码。
    =================================================================
    01430000    FFD2             call edx
    01430002    60               pushad
    01430003    8B1D 30004301    mov ebx,dword ptr ds:[1430030]
    01430009    C1E0 1F          shl eax,1F
    0143000C    03C5             add eax,ebp
    0143000E    8903             mov dword ptr ds:[ebx],eax
    01430010    83C3 04          add ebx,4
    01430013    891D 30004301    mov dword ptr ds:[1430030],ebx
    01430019    61               popad
    0143001A    807B 20 00       cmp byte ptr ds:[ebx+20],0
    0143001E  - E9 8CB159FF      jmp 009CB1AF
    01430023    0000             add byte ptr ds:[eax],al
    01430025    0000             add byte ptr ds:[eax],al
    01430027    0000             add byte ptr ds:[eax],al
    01430029    0000             add byte ptr ds:[eax],al
    0143002B    0000             add byte ptr ds:[eax],al
    0143002D    0000             add byte ptr ds:[eax],al
    0143002F    0040 00          add byte ptr ds:[eax],al
    01430032    43               inc ebx
    01430033    0100             add dword ptr ds:[eax],eax
    01430035    0000             add byte ptr ds:[eax],al
    ===================================================================
    二进制:
    FFD2608B1D30004301C1E01F03C5890383C304891D3000430161807B2000E98CB159FF00000000000000000000000000
    400043010000

    F9运行。

    得到数据:
    0143003C  00000000
    01430040  00401505  notpad42.00401505
    01430044  0040151D  notpad42.0040151D
    01430048  00401E79  notpad42.00401E79
    0143004C  00401EE5  notpad42.00401EE5
    ......省略中间部分
    0143012C  00404FB6  notpad42.00404FB6
    01430130  00404FC2  notpad42.00404FC2
    01430134  00404FC8  notpad42.00404FC8
    01430138  00404FCE  notpad42.00404FCE
    0143013C  00000000

    这时候程序跑飞了。复制这些数据到文件保存。
    =========================================================================================================
    二、INT3断点法(无Anti-rdtsc工具)。

    00401000 >  68 01E04000      push notpad42.0040E001                             ; OD入口。
    00401005    E8 01000000      call notpad42.0040100B
    0040100A    C3               retn
    0040100B    C3               retn

    Alt+O,忽略除INT3外的全部选项,F9运行一次。

    009CB9AF    90               nop                                                ; 断在这里。
    009CB9B0    EB 01            jmp short 009CB9B3
    009CB9B2    6966 81 FE474674 imul esp,dword ptr ds:[esi-7F],744647F>
    009CB9B9    05 31C040EB      add eax,EB40C031
    009CB9BE    0231             add dh,byte ptr ds:[ecx]
    009CB9C0    C031 DB          sal byte ptr ds:[ecx],0DB
    009CB9C3    64:8F03          pop dword ptr fs:[ebx]
    009CB9C6    83C4 04          add esp,4
    009CB9C9    EB 01            jmp short 009CB9CC
    009CB9CB    E8 5F5E5BC3      call C3F8182F

    搜索-->文本字符串-->在ASCII“170”双击,来到反汇编窗口,向下滚动,找到第一个jbe,下硬断点。

    009CD7EF    8B45 F0          mov eax,dword ptr ss:[ebp-10]
    009CD7F2    8B55 F4          mov edx,dword ptr ss:[ebp-C]
    009CD7F5    3B55 FC          cmp edx,dword ptr ss:[ebp-4]
    009CD7F8    75 0B            jnz short 009CD805
    009CD7FA    3B45 F8          cmp eax,dword ptr ss:[ebp-8]
    009CD7FD    0F86 BB000000    jbe 009CD8BE                              ; ★jbe 009CD8BE-->jmp 009CD8BE★
    009CD803    EB 06            jmp short 009CD80B
    009CD805    0F8E B3000000    jle 009CD8BE
    009CD80B    833D E0F89C00 00 cmp dword ptr ds:[9CF8E0],0
    009CD812    75 12            jnz short 009CD826

    Ctrl+F2,重起OD,忽略全部异常,F9,中断在009CD7FD,修改jbe 009CD8BE-->jmp 009CD8BE。

    Ctrl+B,查找字符串:33C08A078D04408B6C83688BC6

    009CB171    8D7B 40          lea edi,dword ptr ds:[ebx+40]
    009CB174    833C24 00        cmp dword ptr ss:[esp],0
    009CB178    0F86 AB010000    jbe 009CB329                         ; F2,在这里下断,F9。
    009CB17E    33C0             xor eax,eax                          ; 找到这里,向下看。
    009CB180    8A07             mov al,byte ptr ds:[edi]
    009CB182    8D0440           lea eax,dword ptr ds:[eax+eax*2]
    009CB185    8B6C83 68        mov ebp,dword ptr ds:[ebx+eax*4+68]
    009CB189    8BC6             mov eax,esi
    009CB18B    FFD5             call ebp
    009CB18D    8BE8             mov ebp,eax
    009CB18F    036B 24          add ebp,dword ptr ds:[ebx+24]
    009CB192    03AB E0000000    add ebp,dword ptr ds:[ebx+E0]
    009CB198    EB 01            jmp short 009CB19B
    009CB19A    E8 33C08A47      call 482771D2
    009CB19F    098D 04408B54    or dword ptr ss:[ebp+548B4004],ecx
    009CB1A5    8368 8B C6       sub dword ptr ds:[eax-75],-3A
    009CB1A9    FFD2             call edx                             ; call edx-->jmp xxxxxxxx
    009CB1AB    807B 20 00       cmp byte ptr ds:[ebx+20],0
    009CB1AF    0F85 3D010000    jnz 009CB2F2


    到009CB178中断后,F4直接到009CB1A9。

    用HideOD申请内存。得到01430000。

    修改009CB1A9,call edx-->jmp 01430000。

    F8步进到申请内存01430000,键入以下代码。
    =================================================================
    01430000    FFD2             call edx
    01430002    60               pushad
    01430003    8B1D 30004301    mov ebx,dword ptr ds:[1430030]
    01430009    C1E0 1F          shl eax,1F
    0143000C    03C5             add eax,ebp
    0143000E    8903             mov dword ptr ds:[ebx],eax
    01430010    83C3 04          add ebx,4
    01430013    891D 30004301    mov dword ptr ds:[1430030],ebx
    01430019    61               popad
    0143001A    807B 20 00       cmp byte ptr ds:[ebx+20],0
    0143001E  - E9 8CB159FF      jmp 009CB1AF
    01430023    0000             add byte ptr ds:[eax],al
    01430025    0000             add byte ptr ds:[eax],al
    01430027    0000             add byte ptr ds:[eax],al
    01430029    0000             add byte ptr ds:[eax],al
    0143002B    0000             add byte ptr ds:[eax],al
    0143002D    0000             add byte ptr ds:[eax],al
    0143002F    0040 00          add byte ptr ds:[eax],al
    01430032    43               inc ebx
    01430033    0100             add dword ptr ds:[eax],eax
    01430035    0000             add byte ptr ds:[eax],al
    ===================================================================
    二进制:
    FFD2608B1D30004301C1E01F03C5890383C304891D3000430161807B2000E98CB159FF00000000000000000000000000
    400043010000

    F9运行。

    得到数据:
    0143003C  00000000
    01430040  00401505  notpad42.00401505
    01430044  0040151D  notpad42.0040151D
    01430048  00401E79  notpad42.00401E79
    0143004C  00401EE5  notpad42.00401EE5
    ......省略中间部分
    0143012C  00404FB6  notpad42.00404FB6
    01430130  00404FC2  notpad42.00404FC2
    01430134  00404FC8  notpad42.00404FC8
    01430138  00404FCE  notpad42.00404FCE
    0143013C  00000000

    这时候程序跑飞了。复制这些数据到文件保存。
    =========================================================================================================
    对照上面的二中方法,得到同一个结果。

    后面的继续调试可以参照8100303大侠的方法进行,本人也在继续摸索中,希望更多的高手能提供相应的教程和PATCH代

    码,造福菜鸟们。

    [ 本帖最后由 machenglin 于 2006-5-9 12:14 编辑 ]

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?加入我们

    x
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-5-9 12:22:10 | 显示全部楼层
    呵呵,马兄越来越厉害哈,脱壳牛啊!!!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-11-22 20:08
  • 签到天数: 2 天

    [LV.1]初来乍到

     楼主| 发表于 2006-5-9 12:24:48 | 显示全部楼层
    感谢渔歌子兄弟。
    看到网络上对4.26版没有脱壳入门的方法,就献丑一次。:)
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-5-9 13:23:14 | 显示全部楼层
    有这个工具---Anti-rdtsc,没有用advance import protect,是可以按照以前的方法脱的,
    使用advance import protect方式后,以前的方法就不行了,不过2.1的用advance import protect方式保护的也不能用普通的方法脱了,期待高人献身,为我们菜鸟指点脱advance import protect的方法
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-5-9 15:25:13 | 显示全部楼层
    好文章,谢谢楼主分享!!!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-11-22 20:08
  • 签到天数: 2 天

    [LV.1]初来乍到

     楼主| 发表于 2006-5-9 16:22:58 | 显示全部楼层
    原帖由 windycandy 于 2006-5-9 13:23 发表
    有这个工具---Anti-rdtsc,没有用advance import protect,是可以按照以前的方法脱的,
    使用advance import protect方式后,以前的方法就不行了,不过2.1的用advance import protect方式保护的也不能用普通的方法 ...

    advance import protect可以参考KANXUE的文章,补丁全部能用在4.26版。
    该脱文只是对开始部分提供个思路,后面再写就是全抄KANXUE的了,所以就没继续下去。
    加壳的记事本是全部保护方式,因论坛附件限制在300K,就不传了。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?加入我们

    x
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-5-9 18:48:54 | 显示全部楼层
    谢谢楼主分享!!!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-5-6 16:27
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2006-5-9 20:41:00 | 显示全部楼层
    原帖由 渔歌子 于 2006-5-9 12:22 发表
    呵呵,马兄越来越厉害哈,脱壳牛啊!!!


    /:D /:D 不怎么用这个软件,听起来很牛的样子!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-5-10 09:57:50 | 显示全部楼层
    好好学习,天天向上

    收藏下来等有时间再去学习脱这种猛壳;P
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-4-12 09:00
  • 签到天数: 83 天

    [LV.6]常住居民II

    发表于 2006-5-10 17:23:15 | 显示全部楼层
    这个可是热壳,收藏学习
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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