飘云阁(PYG官方论坛)

 找回密码
 加入论坛

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 241|回复: 2

[第十六轮] PYG5.4第十六期第一题

[复制链接]
  • TA的每日心情
    开心
    昨天 11:48
  • 签到天数: 814 天

    [LV.10]以坛为家III

    发表于 2019-5-6 10:06:04 | 显示全部楼层 |阅读模式
    本帖最后由 jim66xy 于 2019-5-6 15:58 编辑

    一、查壳,用软件DIE_1.01_win查询结果
    UPX(3.95)[LZMA,brute]
    Microsoft Visual C/C++(6.0)[-]
    Microsoft Linker(7.10)[EXE32]

    二、脱壳,两次ESP定律,单步几次可以顺利到达OEP

    005F34BD    55              push ebp————注:OEP
    005F34BE    8BEC            mov ebp,esp
    005F34C0    6A FF           push -0x1
    005F34C2    68 3054F700     push dts音效?00F75430
    005F34C7    68 94695F00     push dts音效?005F6994
    005F34CC    64:A1 00000000  mov eax,dword ptr fs:[0]
    005F34D2    50              push eax
    005F34D3    64:8925 0000000>mov dword ptr fs:[0],esp
    005F34DA    83EC 58         sub esp,0x58
    005F34DD    53              push ebx
    005F34DE    56              push esi
    005F34DF    57              push edi
    005F34E0    8965 E8         mov dword ptr ss:[ebp-0x18],esp
    005F34E3    FF15 78626800   call dword ptr ds:[0x686278]             ; kernel32.GetVersion
    005F34E9    33D2            xor edx,edx                              ; dts音效?<ModuleEntryPoint>
    005F34EB    8AD4            mov dl,ah
    005F34ED    8915 EC261001   mov dword ptr ds:[0x11026EC],edx         ; dts音效?<ModuleEntryPoint>

    WIN7 64位机脱壳,修复,不知为什么在我电脑上修复不成功
    这时只好拿出脱壳神器 xvlk_win32_0.22 汉化版
    001.png
    完美脱壳运行,真的是神器!
    实际上本软件不需脱壳,带壳调试是一样的

    三、软件破解

    1、运行软件
    需要登陆才能使用软件,注册一个贴登陆,出现提示
    002.png
    这时第一想法是F12暂停法,试一下
    003.png


    显示调用,来到代码段,004DB1ED处下断点

    004DB1B8   /EB 0A           jmp short dts音效?004DB1C4
    004DB1BA   |3D 01030080     cmp eax,0x80000301
    004DB1BF   |75 03           jnz short dts音效?004DB1C4
    004DB1C1   |8B5E 24         mov ebx,dword ptr ds:[esi+0x24]
    004DB1C4   \8B46 20         mov eax,dword ptr ds:[esi+0x20]
    004DB1C7    85C0            test eax,eax
    004DB1C9    B8 9843FA00     mov eax,dts音效?00FA4398                   ; 信息:
    004DB1CE    74 03           je short dts音效?004DB1D3
    004DB1D0    8B46 18         mov eax,dword ptr ds:[esi+0x18]
    004DB1D3    8B76 0C         mov esi,dword ptr ds:[esi+0xC]
    004DB1D6    8BCE            mov ecx,esi
    004DB1D8    F7D1            not ecx
    004DB1DA    81E1 00100000   and ecx,0x1000
    004DB1E0    8D144E          lea edx,dword ptr ds:[esi+ecx*2]
    004DB1E3    52              push edx
    004DB1E4    50              push eax
    004DB1E5    57              push edi
    004DB1E6    53              push ebx
    004DB1E7    FF15 14676800   call dword ptr ds:[0x686714]             ; user32.MessageBoxA
    004DB1ED    5F              pop edi                                  ; user32.753039C0
    004DB1EE    5E              pop esi                                  ; user32.753039C0
    004DB1EF    83F8 03         cmp eax,0x3
    004DB1F2    5B              pop ebx                                  ; user32.753039C0
    004DB1F3    75 0F           jnz short dts音效?004DB204
    004DB1F5    8B4C24 68       mov ecx,dword ptr ss:[esp+0x68]
    004DB1F9    B8 02000000     mov eax,0x2
    004DB1FE    8901            mov dword ptr ds:[ecx],eax
    004DB200    83C4 64         add esp,0x64c
    004DB203    C3              retn


    F9运行,断下来后,单步经过2次返回,来到关键代码段

    004797DB    55              push ebp
    004797DC    8BEC            mov ebp,esp
    004797DE    81EC 20000000   sub esp,0x20
    004797E4    8B1D 6C390801   mov ebx,dword ptr ds:[0x108396C]
    004797EA    83C3 1C         add ebx,0x1C————————————[0x108396C]+1C的值是关键
    004797ED    895D FC         mov dword ptr ss:[ebp-0x4],ebx           ; dts音效?004DB110
    004797F0    8B5D FC         mov ebx,dword ptr ss:[ebp-0x4]
    004797F3    833B 02         cmp dword ptr ds:[ebx],0x2————— 关键比较
    004797F6    0F8D DB000000   jge dts音效?004798D7—————— 关键跳
    004797FC    8B1D 6C390801   mov ebx,dword ptr ds:[0x108396C]
    00479802    83C3 1C         add ebx,0x1C
    00479805    895D FC         mov dword ptr ss:[ebp-0x4],ebx           ; dts音效?004DB110
    00479808    8B5D FC         mov ebx,dword ptr ss:[ebp-0x4]
    0047980B    DB03            fild dword ptr ds:[ebx]
    0047980D    DD5D F4         fstp qword ptr ss:[ebp-0xC]
    00479810    DD45 F4         fld qword ptr ss:[ebp-0xC]
    00479813    DC05 B4F86800   fadd qword ptr ds:[0x68F8B4]
    00479819    DD5D EC         fstp qword ptr ss:[ebp-0x14]
    0047981C    DD45 EC         fld qword ptr ss:[ebp-0x14]
    0047981F    E8 4278F8FF     call dts音效?00401066
    00479824    83F8 01         cmp eax,0x1
    00479827    7C 05           jl short dts音效?0047982E
    00479829    83F8 03         cmp eax,0x3
    0047982C    7C 17           jl short dts音效?00479845
    0047982E    68 87000000     push 0x87
    00479833    68 23EE0804     push 0x408EE23
    00479838    68 09000000     push 0x9
    0047983D    E8 64C20500     call dts音效?004D5AA6
    00479842    83C4 0C         add esp,0xC
    00479845    48              dec eax
    00479846    E8 00000000     call dts音效?0047984B
    0047984B    5B              pop ebx                                  ; dts音效?004DB110
    0047984C    031C85 7A1B7F00 add ebx,dword ptr ds:[eax*4+0x7F1B7A]
    00479853    FFE3            jmp ebx                                  ; dts音效?004DB110
    00479855    B8 1CE68700     mov eax,dts音效?0087E61C                   ; 亲,您是体验版用户,每首曲目只制作90-120秒,是否购买软件?
    0047985A    E9 05000000     jmp dts音效?00479864
    0047985F    B8 57E68700     mov eax,dts音效?0087E657                   ; 亲,您是基础版用户,【十倍音效】【2.0转5.1】功能只能体验90-120秒,是否升级为专业版用户?
    00479864    8945 E8         mov dword ptr ss:[ebp-0x18],eax
    00479867    6A 00           push 0x0
    00479869    6A 00           push 0x0
    0047986B    6A 00           push 0x0
    0047986D    68 04000080     push 0x80000004
    00479872    6A 00           push 0x0
    00479874    68 B0E68700     push dts音效?0087E6B0                      ; 权限提示
    00479879    68 01030080     push 0x80000301
    0047987E    6A 00           push 0x0
    00479880    68 24000000     push 0x24
    00479885    68 04000080     push 0x80000004
    0047988A    6A 00           push 0x0
    0047988C    8B45 E8         mov eax,dword ptr ss:[ebp-0x18]          ; dts音效?0087E61C
    0047988F    85C0            test eax,eax
    00479891    75 05           jnz short dts音效?00479898
    00479893    B8 BCF86800     mov eax,dts音效?0068F8BC
    00479898    50              push eax
    00479899    68 04000000     push 0x4
    0047989E    BB 10B14D00     mov ebx,dts音效?004DB110
    004798A3    E8 ECC10500     call dts音效?004D5A94
    004798A8    83C4 34         add esp,0x34
    004798AB    8945 E4         mov dword ptr ss:[ebp-0x1C],eax
    004798AE    8B5D E8         mov ebx,dword ptr ss:[ebp-0x18]          ; dts音效?0087E61C
    004798B1    85DB            test ebx,ebx                             ; dts音效?004DB110
    004798B3    74 09           je short dts音效?004798BE
    004798B5    53              push ebx                                 ; dts音效?004DB110
    004798B6    E8 D3C10500     call dts音效?004D5A8E
    004798BB    83C4 04         add esp,0x4
    004798BE    837D E4 05      cmp dword ptr ss:[ebp-0x1C],0x5
    004798C2    0F85 0A000000   jnz dts音效?004798D2
    004798C8    E8 10FBFBFF     call dts音效?004393DD
    004798CD    E9 00000000     jmp dts音效?004798D2
    004798D2    E9 00000000     jmp dts音效?004798D7
    004798D7    8BE5            mov esp,ebp
    004798D9    5D              pop ebp
    004798DA    C3              retn


    发现[0x108396C]+1C的值决定004797F6 处的跳转,
    修改004797F6 处的跳转试一下,发现还是体验版
    修改内存[0x108396C]+1C处的值为2,发现变为VIP
    004.png
    仍然显示为体验版,尝试各项功能,能正常使用,但还不是完美破解
    这时我在想,界面上有“体验版”字样,搜索字符串试试,发现有“体验版”字符串

    004767B0   push dts音效?0087C88A                       登录失败
    004767C9   mov eax,dts音效?0087C827                    登录失败,请检查用户名和密码!
    00476805   mov eax,dts音效?0087C7EC                    授权失败,旧版已关闭,请到官网[www.dts007.com]下载最新版!
    00476939   push dts音效?0087C893                       )
    00476941   push dts音效?0087C895                       |到期时间(
    004769DA   mov eax,dts音效?0087C8A0                    体验版本
    00476A24   mov eax,dts音效?00859B6C                    1


    双击来到代码处
    004769B1    E8 382B0000     call dts音效?004794EE
    004769B6    8B1D 6C390801   mov ebx,dword ptr ds:[0x108396C]
    004769BC    83C3 1C         add ebx,0x1C————————————[0x108396C]+1C的值是关键
    004769BF    895D DC         mov dword ptr ss:[ebp-0x24],ebx
    004769C2    8B5D DC         mov ebx,dword ptr ss:[ebp-0x24]
    004769C5    833B 00         cmp dword ptr ds:[ebx],0x0————关键比较
    004769C8    0F85 2F000000   jnz dts音效?004769FD——————关键跳转
    004769CE    8B1D 6C390801   mov ebx,dword ptr ds:[0x108396C]
    004769D4    83C3 10         add ebx,0x10
    004769D7    895D DC         mov dword ptr ss:[ebp-0x24],ebx
    004769DA    B8 A0C88700     mov eax,dts音效?0087C8A0                   ; 体验版本
    004769DF    50              push eax
    004769E0    8B5D DC         mov ebx,dword ptr ss:[ebp-0x24]
    004769E3    8B1B            mov ebx,dword ptr ds:[ebx]
    004769E5    85DB            test ebx,ebx
    004769E7    74 09           je short dts音效?004769F2
    004769E9    53              push ebx
    004769EA    E8 9FF00500     call dts音效?004D5A8E


    修改[0x108396C]+1C的值为2,运行软件,发现完美破解了

    005.png
    尝试各项功能,均能正常使用
    四、继续寻找关键码
    以过反复调试,发现下列代码是判断体验版、基础版、专业版的关键处

    004794EE    55              push ebp
    004794EF    8BEC            mov ebp,esp
    004794F1    81EC 28000000   sub esp,0x28
    004794F7    8B1D 6C390801   mov ebx,dword ptr ds:[0x108396C]
    004794FD    83C3 14         add ebx,0x14
    00479500    895D FC         mov dword ptr ss:[ebp-0x4],ebx
    00479503    8B5D FC         mov ebx,dword ptr ss:[ebp-0x4]
    00479506    833B 12         cmp dword ptr ds:[ebx],0x12————;与12比较,等于则为基础版
    00479509    0F85 74000000   jnz dts音效?00479583       ————关键跳                                      
    0047950F    8B1D 6C390801   mov ebx,dword ptr ds:[0x108396C]
    00479515    83C3 20         add ebx,0x20
    00479518    895D F4         mov dword ptr ss:[ebp-0xC],ebx
    0047951B    8B1D 6C390801   mov ebx,dword ptr ds:[0x108396C]
    00479521    83C3 28         add ebx,0x28
    00479524    895D F0         mov dword ptr ss:[ebp-0x10],ebx
    00479527    8B5D F0         mov ebx,dword ptr ss:[ebp-0x10]
    0047952A    8B53 04         mov edx,dword ptr ds:[ebx+0x4]
    0047952D    8B03            mov eax,dword ptr ds:[ebx]
    0047952F    33C9            xor ecx,ecx
    00479531    8B5D F4         mov ebx,dword ptr ss:[ebp-0xC]
    00479534    3953 04         cmp dword ptr ds:[ebx+0x4],edx
    00479537    7C 0A           jl short dts音效?00479543
    00479539    7F 07           jg short dts音效?00479542
    0047953B    8B5D F4         mov ebx,dword ptr ss:[ebp-0xC]
    0047953E    3903            cmp dword ptr ds:[ebx],eax
    00479540    76 01           jbe short dts音效?00479543
    00479542    41              inc ecx
    00479543    8BC1            mov eax,ecx
    00479545    85C0            test eax,eax
    00479547    0F85 22000000   jnz dts音效?0047956F
    0047954D    8B1D 6C390801   mov ebx,dword ptr ds:[0x108396C]
    00479553    83C3 20         add ebx,0x20
    00479556    895D E8         mov dword ptr ss:[ebp-0x18],ebx
    00479559    8B5D E8         mov ebx,dword ptr ss:[ebp-0x18]
    0047955C    833B 00         cmp dword ptr ds:[ebx],0x0
    0047955F    75 04           jnz short dts音效?00479565
    00479561    837B 04 00      cmp dword ptr ds:[ebx+0x4],0x0
    00479565    0F84 04000000   je dts音效?0047956F
    0047956B    33C0            xor eax,eax
    0047956D    EB 05           jmp short dts音效?00479574
    0047956F    B8 01000000     mov eax,0x1
    00479574    85C0            test eax,eax
    00479576    0F84 07000000   je dts音效?00479583
    0047957C    B8 01000000     mov eax,0x1
    00479581    EB 05           jmp short dts音效?00479588
    00479583    B8 00000000     mov eax,0x0
    00479588    85C0            test eax,eax
    0047958A    0F84 1A000000   je dts音效?004795AA
    00479590    8B1D 6C390801   mov ebx,dword ptr ds:[0x108396C]
    00479596    83C3 1C         add ebx,0x1C
    00479599    895D FC         mov dword ptr ss:[ebp-0x4],ebx
    0047959C    8B5D FC         mov ebx,dword ptr ss:[ebp-0x4]
    0047959F    C703 01000000   mov dword ptr ds:[ebx],0x1————————;关键内存赋值为1
    004795A5    E9 C8000000     jmp dts音效?00479672
    004795AA    8B1D 6C390801   mov ebx,dword ptr ds:[0x108396C]
    004795B0    83C3 14         add ebx,0x14
    004795B3    895D F8         mov dword ptr ss:[ebp-0x8],ebx
    004795B6    8B5D F8         mov ebx,dword ptr ss:[ebp-0x8]
    004795B9    833B 11         cmp dword ptr ds:[ebx],0x11 ————;与11比较,等于则为专业版
    004795BC    0F85 74000000   jnz dts音效?00479636 ——————;关键跳
    004795C2    8B1D 6C390801   mov ebx,dword ptr ds:[0x108396C]
    004795C8    83C3 20         add ebx,0x20
    004795CB    895D F0         mov dword ptr ss:[ebp-0x10],ebx
    004795CE    8B1D 6C390801   mov ebx,dword ptr ds:[0x108396C]
    004795D4    83C3 28         add ebx,0x28
    004795D7    895D EC         mov dword ptr ss:[ebp-0x14],ebx
    004795DA    8B5D EC         mov ebx,dword ptr ss:[ebp-0x14]
    004795DD    8B53 04         mov edx,dword ptr ds:[ebx+0x4]
    004795E0    8B03            mov eax,dword ptr ds:[ebx]
    004795E2    33C9            xor ecx,ecx
    004795E4    8B5D F0         mov ebx,dword ptr ss:[ebp-0x10]
    004795E7    3953 04         cmp dword ptr ds:[ebx+0x4],edx
    004795EA    7C 0A           jl short dts音效?004795F6
    004795EC    7F 07           jg short dts音效?004795F5
    004795EE    8B5D F0         mov ebx,dword ptr ss:[ebp-0x10]
    004795F1    3903            cmp dword ptr ds:[ebx],eax
    004795F3    76 01           jbe short dts音效?004795F6
    004795F5    41              inc ecx
    004795F6    8BC1            mov eax,ecx
    004795F8    85C0            test eax,eax
    004795FA    0F85 22000000   jnz dts音效?00479622
    00479600    8B1D 6C390801   mov ebx,dword ptr ds:[0x108396C]
    00479606    83C3 20         add ebx,0x20
    00479609    895D E4         mov dword ptr ss:[ebp-0x1C],ebx
    0047960C    8B5D E4         mov ebx,dword ptr ss:[ebp-0x1C]
    0047960F    833B 00         cmp dword ptr ds:[ebx],0x0
    00479612    75 04           jnz short dts音效?00479618
    00479614    837B 04 00      cmp dword ptr ds:[ebx+0x4],0x0
    00479618    0F84 04000000   je dts音效?00479622
    0047961E    33C0            xor eax,eax
    00479620    EB 05           jmp short dts音效?00479627
    00479622    B8 01000000     mov eax,0x1
    00479627    85C0            test eax,eax
    00479629    0F84 07000000   je dts音效?00479636
    0047962F    B8 01000000     mov eax,0x1
    00479634    EB 05           jmp short dts音效?0047963B
    00479636    B8 00000000     mov eax,0x0
    0047963B    85C0            test eax,eax
    0047963D    0F84 1A000000   je dts音效?0047965D                                                  ;爆破关键跳
    00479643    8B1D 6C390801   mov ebx,dword ptr ds:[0x108396C]
    00479649    83C3 1C         add ebx,0x1C
    0047964C    895D FC         mov dword ptr ss:[ebp-0x4],ebx
    0047964F    8B5D FC         mov ebx,dword ptr ss:[ebp-0x4]
    00479652    C703 02000000   mov dword ptr ds:[ebx],0x2————————;关键内存赋值为2
    00479658    E9 15000000     jmp dts音效?00479672
    0047965D    8B1D 6C390801   mov ebx,dword ptr ds:[0x108396C]
    00479663    83C3 1C         add ebx,0x1C
    00479666    895D FC         mov dword ptr ss:[ebp-0x4],ebx
    00479669    8B5D FC         mov ebx,dword ptr ss:[ebp-0x4]
    0047966C    C703 00000000   mov dword ptr ds:[ebx],0x0————————;关键内存赋值为0
    00479672    8BE5            mov esp,ebp
    00479674    5D              pop ebp                                                            ; dts音效?0047613B
    00479675    C3              retn


    至此软件的流程已基本清楚,也完美实现爆破!
    关键内存[0x108396C]+14=11 ——>[0x108396C]+1C=2——>专业版
    关键内存[0x108396C]+14=12 ——>[0x108396C]+1C=1——>基础版
    关键内存[0x108396C]+14=0A ——>[0x108396C]+1C=0——>体验版
    五、补丁制作

    软件的流程和关键代码找到了,制作补丁就很容易了,首推采用补丁神器Baymax Patch Tools
    爆破点就很多了,下面列举几处,修改1处都可以变为专业版
    100475F81   8903            mov dword ptrds:[ebx],eax    ; 关键赋值处
    将EAX值修改为11
    2004795B9   833B 11         cmp dword ptrds:[ebx],0x11
    汇编代码修改为              cmp dword ptr ds:[ebx],0x0A
    3004795BC  /0F85 74000000   jnz dts音效?00479636
    NOP掉此处代码或修改标志寄存器
    400479636   B8 00000000     mov eax,0x0
    汇编代码修改为              mov eax,0x1
    50047963D  /0F84 1A000000   je dts音效?0047965D          ; 关键跳
    NOP掉此处代码或修改标志寄存器
    60047966C   C703 00000000   mov dword ptrds:[ebx],0x0
       汇编代码修改为              mov dwordptr ds:[ebx],0x2





  • TA的每日心情
    开心
    2016-6-16 14:07
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    发表于 2019-5-6 10:26:35 | 显示全部楼层
    建议重新编辑得美观一点,有机会推送到微信公众号
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-5-10 12:14
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 2019-5-6 12:25:57 | 显示全部楼层
    大致看了下 思路确实不错 晚上回家再慢慢学习
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入论坛

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

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