欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]softDefender破解

[原创]softDefender破解

关于脱壳点击这里有介绍
用softDefender未注册版加壳后的程序运行就弹出一个提示框.很讨厌.下面来破解一下.
我尽量把我的思路写下来,请各位大侠多指教.
od加载脱壳后的程序.运行.
第一反应,看看关于.里面有UNREGISTER VERSION字样.
用字符串搜索插件,很快可以找到.往上拉很容易发现 test ... je...jmp结构.

00412A4A    A1 D4D24600     mov     eax, dword ptr [0x46D2D4]
00412A4F    85C0            test    eax, eax
00412A51    74 4F           je      short 00412AA2                           ;下断,修改z标志位
00412A53    68 14DD4500     push    0045DD14                         ; registered to:

在je处下断,断下后修改z标志位,关于窗口就会变成registered to:
继续找0x46D2D4数据来源.在0x46D2D4处下硬件写入DWORD断点.
重新加载运行:
0040F088    897E 70         mov     dword ptr [esi+0x70], edi
0040F08B    C746 68 E7CB000>mov     dword ptr [esi+0x68], 0xCBE7
0040F092    897E 64         mov     dword ptr [esi+0x64], edi
0040F095    893D D4D24600   mov     dword ptr [0x46D2D4], edi            ;这里初始值
0040F09B    8BC6            mov     eax, esi

删除硬件断点.
因为esi中的值不为0,而且将edi改为esi后代码字节长度不会变.将修改复制到可执行文件.
不会这么简单吧.运行,点击关于,果然没有UNREGISTER VERSION字样.但是一加壳,运行加壳后的程序依然还是会弹出提示框,果然不会这么简单.
加载修改后的文件,再次搜索字符串reg, 这样找到的结果会多点.
就会找到reg.dat reginfo,都在一起,附近还有username code.
这应该没错了.在reg.dat处下断点.
0041265D    68 D0DC4500     push    0045DCD0                         ; reg.dat
00412662    E8 E9760200     call    00439D50
00412667    8D4C24 64       lea     ecx, dword ptr [esp+0x64]
0041266B    E8 60970000     call    0041BDD0
00412670    8D4C24 60       lea     ecx, dword ptr [esp+0x60]
00412674    E8 97980000     call    0041BF10
00412679    84C0            test    al, al
0041267B    0F84 75030000   je      004129F6     ;这里的je不能跳   nop掉.

f8单步跟到je处,如果跳走就跳过了usrname code这些敏感信息,所以不能跳.
暂时修改z标志位,继续跟.中间从reg.dat文件中读了username,code.那些call跟进去也没发现啥.
跟到
00412911    8D4C24 24       lea     ecx, dword ptr [esp+0x24]
00412915    C68424 20020000>mov     byte ptr [esp+0x220], 0xB
0041291D    895424 4C       mov     dword ptr [esp+0x4C], edx
00412921    E8 4A8B0000     call    0041B470                         ; ? 卡住
00412926    85C0            test    eax, eax
00412928    74 67           je      short 00412991

发现到call    0041B470 就会卡住,重新加载,到这个call f7进去看看.
0041B4D7    56              push    esi
0041B4D8    C74424 14 00000>mov     dword ptr [esp+0x14], 0x0
0041B4E0    33DB            xor     ebx, ebx
0041B4E2    53              push    ebx
0041B4E3    8D8C24 44010000 lea     ecx, dword ptr [esp+0x144]
0041B4EA    68 288D4600     push    00468D28                         ; \\.\physicaldrive%d
0041B4EF    51              push    ecx
0041B4F0    E8 D2D40000     call    004289C7
0041B4F5    83C4 0C         add     esp, 0xC
0041B4F8    8D9424 40010000 lea     edx, dword ptr [esp+0x140]
0041B4FF    6A 00           push    0x0
0041B501    6A 00           push    0x0
0041B503    6A 03           push    0x3
0041B505    6A 00           push    0x0
0041B507    6A 03           push    0x3
0041B509    68 000000C0     push    0xC0000000
0041B50E    52              push    edx
0041B50F    FF15 18724D00   call    dword ptr [<&kernel32.CreateFile>; KERNEL32.CreateFileA

这里读取了磁盘信息不知道用来干啥.
继续f8到
0041B637    85C0            test    eax, eax
0041B639    75 10           jnz     short 0041B64B
0041B63B    8D8C24 34020000 lea     ecx, dword ptr [esp+0x234]
0041B642    E8 59000000     call    0041B6A0                         ; ?又卡住
0041B647    85C0            test    eax, eax
0041B649    74 42           je      short 0041B68D

发现又被卡住,只好重新加载再f7进去
0041B70C    C640 01 00      mov     byte ptr [eax+0x1], 0x0
0041B710    BF 3C8D4600     mov     edi, 00468D3C                    ; winio.sys
0041B715    83C9 FF         or      ecx, 0xFFFFFFFF
0041B718    33C0            xor     eax, eax
0041B71A    F2:AE           repne   scas byte ptr es:[edi]
0041B71C    F7D1            not     ecx
0041B71E    2BF9            sub     edi, ecx

又是不知道在用winio.sys干啥.继续f8...
然后就在那里面循环循环,走不出来.
只好把retn前不远处的jl跳转修改s标志位给改了.
0041BA2E  ^\0F8C 24FDFFFF   jl      0041B758                    ;往上跳循环 nop掉
0041BA34    8B4424 20       mov     eax, dword ptr [esp+0x20]
0041BA38    5F              pop     edi
0041BA39    5E              pop     esi
0041BA3A    5D              pop     ebp
0041BA3B    5B              pop     ebx
0041BA3C    81C4 E8010000   add     esp, 0x1E8
0041BA42    C3              retn

运行.加壳.发现加壳后的程序不会弹对话框了.
所以nop掉两次跳转.然后复制到可执行文件 .暴破成功.

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功