首页
社区
课程
招聘
[旧帖] [原创]脱壳+去双自校验+爆破3种方法全过程 0.00雪花
发表于: 2008-2-6 17:19 4569

[旧帖] [原创]脱壳+去双自校验+爆破3种方法全过程 0.00雪花

2008-2-6 17:19
4569
【文章标题】: 原创!!脱壳+去双自校验+爆破3种方法全过程
【文章作者】: b笨小孩b
【作者邮箱】: jn_liubao@163.com
【作者QQ号】: 122627056
【软件名称】: 多国语言互译专家
【软件大小】: 3.15M
【下载地址】: http://ftp.pconline.com.cn/pub/download/200707/hyfy_PConline.exe
【加壳方式】: ASPack 2.12 -> Alexey Solodovnikov
【保护方式】: ASPack 2.12壳+双自校验
【编写语言】: vb6.0
【使用工具】: od,ImportREC_fix
【操作平台】: winxpsp2
【软件介绍】: 各国语言互译  “垃圾软件一个试试就知道了”
【作者声明】: 学习破解接近2个月的处女破献给所有和我一样的菜鸟,激励一下信心同时也是给自己的新年礼物!!同时在此感谢“惜u雪”的大力帮助!!
--------------------------------------------------------------------------------
【详细过程】
  爆破语言互译专家全过程:
  第一步:脱壳
  
  查壳hyfy.exe为ASPack 2.12 -> Alexey Solodovnikov用四步打法脱壳查找popad四次来到
  
  0042A3A6    59              pop     ecx
  0042A3A7    0BC9            or      ecx, ecx
  0042A3A9    8985 A8030000   mov     dword ptr [ebp+3A8], eax
  0042A3AF    61              popad          和开始的pushad对应F4运行到此
  0042A3B0    75 08           jnz     short 0042A3BA
  0042A3B2    B8 01000000     mov     eax, 1
  0042A3B7    C2 0C00         retn    0C
  0042A3BA    68 00000000     push    0      两个retn是这个壳的特性
  0042A3BF    C3              retn           找到他们oep就在这里进入就是!!!
  0042A3C0    8B85 26040000   mov     eax, dword ptr [ebp+426]
  
  
  00402898    68 54454000     push    00404554       oep了dump   典型的vb程序
  0040289D    E8 EEFFFFFF     call    00402890     jmp 到 msvbvm60.ThunRTMain                    
  004028A2    0000            add     byte ptr [eax], al
  004028A4    0000            add     byte ptr [eax], al
  004028A6    0000            add     byte ptr [eax], al
  004028A8    3000            xor     byte ptr [eax], al
  004028AA    0000            add     byte ptr [eax], al
  004028AC    3800            cmp     byte ptr [eax], al
  004028AE    0000            add     byte ptr [eax], al
  004028B0    0000            add     byte ptr [eax], al
  004028B2    0000            add     byte ptr [eax], al
  004028B4    F5              cmc
  004028B5    98              cwde
  然后用ImportREC_fix修复删除无效的指针。不修复的话软件不能运行
  
  修复后发现程序不能运行分析原因应该是自校验。
  
  第二步:解除运行自校验
  
  需要用到的函数是vb的退出函数vbaEnd,od插件设置隐藏"这个程序检测调试器"
  od载入ctrl+n"在右键---查找---当前模块的名称"中找vb的退出函数__vbEnd右键---在每个参考上设置断点然后F9运行!
  运行后断在:
  0041314C   .  50            push    eax                              ; /String8
  0041314D   .  8D4D A4       lea     ecx, dword ptr [ebp-5C]          ; |
  00413150   .  51            push    ecx                              ; |ARG2
  00413151   .  FF15 58114000 call    dword ptr [<&msvbvm60.__vbaStrVa>; \__vbaStrVarVal
  00413157   .  50            push    eax                              ; /FileName         获取我们修改后的文件名
  00413158   .  FF15 B4114000 call    dword ptr [<&msvbvm60.rtcFileLen>; \rtcFileLen
  0041315E   .  33D2          xor     edx, edx
  00413160      3D 0A300200   cmp     eax, 2300A                      比较文件大小大于115k就跳我们脱壳后的文件是192k
  "此时eax的值是:196608字节大于143370字节,可以把这个2300A改成32000也就是改成2m大小或是把13181的je改成jnz
  
  0413165   .  0F9FC2        setg    dl
  00413168   .  F7DA          neg     edx
  0041316A   .  66:8995 ACFEF>mov     word ptr [ebp-154], dx
  00413171   .  8D4D A4       lea     ecx, dword ptr [ebp-5C]
  00413174   .  FF15 34124000 call    dword ptr [<&msvbvm60.__vbaFreeS>;  msvbvm60.__vbaFreeStr
  0041317A   .  0FBF85 ACFEFF>movsx   eax, word ptr [ebp-154]
  00413181   .  85C0          test    eax, eax
  00413183   .  74 12         je      short 00413197      
  00413185   .  C745 FC 05000>mov     dword ptr [ebp-4], 5
  0041318C   .  FF15 34104000 call    dword ptr [<&msvbvm60.__vbaEnd>] ;  msvbvm60.__vbaEnd  断在这个位置
  00413192   .  E9 7A5C0000   jmp     00418E11
  00413197   >  C745 FC 08000>mov     dword ptr [ebp-4], 8
  0041319E   .  833D BC684200>cmp     dword ptr [4268BC], 0
  004131A5   .  75 1C         jnz     short 004131C3
  004131A7   .  68 BC684200   push    004268BC
  004131AC   .  68 9C794000   push    0040799C
  004131B1   .  FF15 7C114000 call    dword ptr [<&msvbvm60.__vbaNew2>>;  msvbvm60.__vbaNew2
  
  好了修改保存再次运行我们修改后的程序"嘿嘿成功运行了"
  
  第三步:解除注册自校验
  
  可以运行了那就注册试试吧我想大家也等布及来爆破它了吧,运行后注册....???怎么出错了莫非这是传说中的注册自校验?有校验我就给你解了它
  好了od载入运行"注意隐藏od哦这个软件检测调试器的"和上次校验一样只不过有个出错提示"嘿嘿,知道下什么断点了吧,对了还是vbaEnd断点"
  运行后删除以前的断点,然后再ctrl+n"在右键---查找---当前模块的名称"中找vb的退出函数__vbEnd右键---在每个参考上设置断点然后F9运行!"
  点注册,嘿嘿断下来了:
  00421F69   .  51            push    ecx
  00421F6A   .  FF15 D8104000 call    dword ptr [<&msvbvm60.rtcKillFil>;  msvbvm60.rtcKillFiles
  00421F70   .  C745 FC 06000>mov     dword ptr [ebp-4], 6
  00421F77   .  8B55 DC       mov     edx, dword ptr [ebp-24]
  00421F7A   .  52            push    edx                              ; /FileName              取我们修改后的文件名
  00421F7B   .  FF15 B4114000 call    dword ptr [<&msvbvm60.rtcFileLen>; \rtcFileLen
  00421F81      3D 92430200   cmp     eax, 24392                                                又是比较大小
  00421F86   .  7E 0D         jle     short 00421F95      小于等于就跳,这里是不会跳的嘿嘿大小不一样我们在这里改成jge或是改上面24392改成32000
  00421F88   .  C745 FC 07000>mov     dword ptr [ebp-4], 7
  00421F8F   .  FF15 34104000 call    dword ptr [<&msvbvm60.__vbaEnd>] ;  msvbvm60.__vbaEnd        停在这个位置"嘿嘿看看上面发现了什么!!!"
  00421F95   >  C745 F0 00000>mov     dword ptr [ebp-10], 0
  00421F9C   .  68 13204200   push    00422013
  00421FA1   .  EB 66         jmp     short 00422009
  00421FA3   .  8D45 D0       lea     eax, dword ptr [ebp-30]
  00421FA6   .  50            push    eax
  00421FA7   .  8D4D D4       lea     ecx, dword ptr [ebp-2C]
  00421FAA   .  51            push    ecx
  00421FAB   .  8D55 D8       lea     edx, dword ptr [ebp-28]
  00421FAE   .  52            push    edx
  00421FAF   .  6A 03         push    3
  00421FB1   .  FF15 A0114000 call    dword ptr [<&msvbvm60.__vbaFreeS>;  msvbvm60.__vbaFreeStrList
  00421FB7   .  83C4 10       add     esp, 10
  00421FBA   .  8D45 C4       lea     eax, dword ptr [ebp-3C]
  
  
  至此所有的自校验修改完成。下一步爆破"嘿嘿,最终目的”
  
  
  第四步:破解使用次数限制
  原来我们拿到的这个软件有30次的使用限制"嘿嘿要是好用的话使用次数不多啊!怎么办呢???让它变成无数次好不好,呵呵动手"
  首先说下使用限制的次数一般情况下,除了注册表中存放,就是WINDOWS/SYSTEM32目录下,再就是自身安装文件目录下创建DAT文件或者INI配置文件中,然后重启的时候再取出来
  比较下看你用了多少次,如果次数够了呢就不让你运行了!我们这个软件是通过注册表来比较的!!"呵呵怎么知道的呢,自己摸索下吧。先告诉大家一些常用的断点都是重启验证的哦!
  访问注册表类常用API:
  
  RegOpenKeyA     //打开一个现有的注册表项。
  
  RegOpenKeyExA   //打开一个现有的注册表项。
  
  RegCreateKeyA    //在指定的项下创建或打开一个项。
  
  RegCreateKeyExA   //在指定的项下创建新项的更复杂的方式。
  
  RegDeleteKeyA   //删除现有项下一个指定的子项。
  
  RegDeleteValueA   //删除指定项下的一个值。
  
  RegQueryValueA    //获取一个项的设置值。
  
  RegQueryValueExA   //获取一个项的设置值。
  
  RegSetValueA    //设置指定项或子项的值。
  
  RegSetValueExA   //设置指定项的值。
  
  RegCloseKey    //关闭系统注册表中的一个项。
  
  访问文件类常用API:
  
  CreateFileA     //打开和创建文件、管道、通信服务、设备以及控制台。
  
  OpenFile       //它可以执行大量不同的文件操作。
  
  ReadFile     //从文件中读出数据。
  
  ReadFileEx    //与ReadFile相似,只是他只能用于异步读操作,并包含了一个完整的回调。
  
  INI初始化文件相关API:
  
  GetPrivateProfileString     //得到INI文件的配置信息。
  
  GetPrivateProfileInt         //为初始化文件中指定的条目获得一个整数值。
  
  WritePrivateProfilestring   //将一个KEY值写入INI文件的指定Section中。
  
  我们这个软件在启动的时候出来一个提示对话框提示你使用了多少次还剩下多少次,我就是利用这点破它的,思路是这样的它如果要告诉你用了多少次还剩下多少次必须先做个比较我们就抓提示框,看我具体操作啊:
  
  首先od载入运行"注意隐藏od哦这个软件检测调试器的,点F9运行等出现提示框时点F12暂停暂停后稍微等od停下后再点查看调用堆栈ALT+K,然后我们看到下面:
  调用堆栈:     主线程
  地址       堆栈       函数过程 / 参数                       调用来自                      结构
  0012C6F0   7C92DC61   包含ntdll.KiFastSystemCallRet           ntdll.7C92DC5F                0012C7E4
  0012C6F4   7C93C3DA   ntdll.ZwMapViewOfSection              ntdll.7C93C3D5                0012C7E4
  0012C7E8   7C936071   ? ntdll.7C93C53F                      ntdll.7C93606C                0012C7E4
  0012CAA8   7C9362DA   ? ntdll.7C936329                      ntdll.7C9362D5                0012CAA4
  0012CD50   7C801BB9   ? <jmp.&ntdll.LdrLoadDll>             kernel32.7C801BB4             0012CD4C             这个就是调用提示框的地址双击进入然后停在:{1}这个位置:
  
  “有用的代码太多不全贴出来了”
  00417E89   .  FF15 94114000 call    dword ptr [<&msvbvm60.__vbaStrCo>;  msvbvm60.__vbaStrCopy
  00417E8F   .  C745 FC 82000>mov     dword ptr [ebp-4], 82
  00417E96   .  8D4D C0       lea     ecx, dword ptr [ebp-40]
  00417E99   .  898D F8FEFFFF mov     dword ptr [ebp-108], ecx
  00417E9F   .  C785 F0FEFFFF>mov     dword ptr [ebp-110], 4008
  00417EA9   .  BA A0884000   mov     edx, 004088A0                    ;  UNICODE "jiv1"                          jiv1这个字符串压入edx
  00417EAE   .  8D4D A0       lea     ecx, dword ptr [ebp-60]                                                     将堆栈地址0012FAD4装入ecx
  
  00417EB1   .  FF15 94114000 call    dword ptr [<&msvbvm60.__vbaStrCo>;  msvbvm60.__vbaStrCopy                  
  00417EB7   .  BA A48F4000   mov     edx, 00408FA4                    ;  UNICODE "Software\Microsoft\QQPP"       将Software\Microsoft\QQPP这个注册表的项传送到edx“注册表项出来了”
  00417EBC   .  8D4D A4       lea     ecx, dword ptr [ebp-5C]
  00417EBF   .  FF15 94114000 call    dword ptr [<&msvbvm60.__vbaStrCo>;  msvbvm60.__vbaStrCopy
  00417EC5   .  C785 B8FEFFFF>mov     dword ptr [ebp-148], 80000002
  00417ECF   .  8D95 F0FEFFFF lea     edx, dword ptr [ebp-110]
  00417ED5   .  52            push    edx
  00417ED6   .  8D45 A0       lea     eax, dword ptr [ebp-60]
  00417ED9   .  50            push    eax
  00417EDA   .  8D4D A4       lea     ecx, dword ptr [ebp-5C]
  00417EDD   .  51            push    ecx
  00417EDE   .  8D95 B8FEFFFF lea     edx, dword ptr [ebp-148]
  00417EE4   .  52            push    edx
  00417EE5   .  E8 66BC0000   call    00423B50
  00417EEA   .  8D45 A0       lea     eax, dword ptr [ebp-60]
  00417EED   .  50            push    eax
  00417EEE   .  8D4D A4       lea     ecx, dword ptr [ebp-5C]
  00417EF1   .  51            push    ecx
  00417EF2   .  6A 02         push    2
  00417EF4   .  FF15 A0114000 call    dword ptr [<&msvbvm60.__vbaFreeS>;  msvbvm60.__vbaFreeStrList
  00417EFA   .  83C4 0C       add     esp, 0C
  00417EFD   .  C745 FC 83000>mov     dword ptr [ebp-4], 83
  00417F04   .  8B55 C0       mov     edx, dword ptr [ebp-40]
  00417F07   .  52            push    edx
  00417F08   .  FF15 40124000 call    dword ptr [<&msvbvm60.rtcR8ValFr>;  msvbvm60.rtcR8ValFromBstr
  00417F0E   .  FF15 F0114000 call    dword ptr [<&msvbvm60.__vbaFpI4>>;  msvbvm60.__vbaFpI4
  00417F14   .  8B4D 08       mov     ecx, dword ptr [ebp+8]
  00417F17   .  8941 58       mov     dword ptr [ecx+58], eax
  00417F1A   .  C745 FC 84000>mov     dword ptr [ebp-4], 84
  00417F21   .  8B55 C0       mov     edx, dword ptr [ebp-40]
  00417F24   .  52            push    edx
  00417F25   .  FF15 80114000 call    dword ptr [<&msvbvm60.__vbaR8Str>;  msvbvm60.__vbaR8Str
  00417F2B   .  DC1D F01A4000 fcomp   qword ptr [401AF0]
  00417F31   .  DFE0          fstsw   ax
  00417F33   .  F6C4 41       test    ah, 41                                   比较ah的值与41比较“这个41和ah是经过运算的出来的所以不是30                                
  00417F36   .  0F84 36020000 je      00418172                         ;      如果使用次数等于30次就跳到使用到期对话框同时要求注册!我们可以改成nop掉  {2}
  00417F3C   .  C745 FC 85000>mov     dword ptr [ebp-4], 85
  00417F43   .  8B45 08       mov     eax, dword ptr [ebp+8]
  00417F46   .  8B48 58       mov     ecx, dword ptr [eax+58]
  00417F49   .  83C1 01       add     ecx, 1                                    在我们上次使用的次数基础上加上1
  00417F4C      0F80 BC0F0000 jo      00418F0E                         ;        修改这里为jmp可以让我们的使用次数永远为0                               {3}
  00417F52   .  FF15 E0104000 call    dword ptr [<&msvbvm60.__vbaI2I4>>;  msvbvm60.__vbaI2I4
  00417F58   .  8B4D 08       mov     ecx, dword ptr [ebp+8]
  00417F5B   .  66:8941 5C    mov     word ptr [ecx+5C], ax
  00417F5F   .  C745 FC 86000>mov     dword ptr [ebp-4], 86
  00417F66   .  8B55 08       mov     edx, dword ptr [ebp+8]
  00417F69   .  83C2 5C       add     edx, 5C
  00417F6C   .  8995 F8FEFFFF mov     dword ptr [ebp-108], edx
  00417F72   .  C785 F0FEFFFF>mov     dword ptr [ebp-110], 4002
  00417F7C   .  8D85 F0FEFFFF lea     eax, dword ptr [ebp-110]
  00417F82   .  50            push    eax
  00417F83   .  8D8D 70FFFFFF lea     ecx, dword ptr [ebp-90]
  00417F89   .  51            push    ecx
  00417F8A   .  FF15 E4114000 call    dword ptr [<&msvbvm60.rtcVarStrF>;  msvbvm60.rtcVarStrFromVar
  00417F90   .  8D95 70FFFFFF lea     edx, dword ptr [ebp-90]
  00417F96   .  52            push    edx
  00417F97   .  8D85 60FFFFFF lea     eax, dword ptr [ebp-A0]
  00417F9D   .  50            push    eax
  00417F9E   .  FF15 A4104000 call    dword ptr [<&msvbvm60.rtcTrimVar>;  msvbvm60.rtcTrimVar
  00417FA4   .  8D8D 60FFFFFF lea     ecx, dword ptr [ebp-A0]
  00417FAA   .  51            push    ecx
  00417FAB   .  FF15 24104000 call    dword ptr [<&msvbvm60.__vbaStrVa>;  msvbvm60.__vbaStrVarMove
  00417FB1   .  8BD0          mov     edx, eax
  00417FB3   .  8D4D 9C       lea     ecx, dword ptr [ebp-64]
  00417FB6   .  FF15 08124000 call    dword ptr [<&msvbvm60.__vbaStrMo>;  msvbvm60.__vbaStrMove
  00417FBC   .  BA A0884000   mov     edx, 004088A0                    ;  UNICODE "jiv1"
  00417FC1   .  8D4D A0       lea     ecx, dword ptr [ebp-60]
  00417FC4   .  FF15 94114000 call    dword ptr [<&msvbvm60.__vbaStrCo>;  msvbvm60.__vbaStrCopy
  00417FCA   .  BA 948D4000   mov     edx, 00408D94                    ;  UNICODE "HKEY_LOCAL_MACHINE\Software\Microsoft\QQPP"
  00417FCF   .  8D4D A4       lea     ecx, dword ptr [ebp-5C]
  00417FD2   .  FF15 94114000 call    dword ptr [<&msvbvm60.__vbaStrCo>;  msvbvm60.__vbaStrCopy
  00417FD8   .  8D55 9C       lea     edx, dword ptr [ebp-64]
  00417FDB   .  52            push    edx
  00417FDC   .  8D45 A0       lea     eax, dword ptr [ebp-60]
  00417FDF   .  50            push    eax
  00417FE0   .  8D4D A4       lea     ecx, dword ptr [ebp-5C]
  00417FE3   .  51            push    ecx
  00417FE4   .  8D95 50FFFFFF lea     edx, dword ptr [ebp-B0]
  00417FEA   .  52            push    edx
  00417FEB   .  E8 00C70000   call    004246F0
  00417FF0   .  8D45 9C       lea     eax, dword ptr [ebp-64]
  00417FF3   .  50            push    eax
  00417FF4   .  8D4D A0       lea     ecx, dword ptr [ebp-60]
  00417FF7   .  51            push    ecx
  00417FF8   .  8D55 A4       lea     edx, dword ptr [ebp-5C]
  00417FFB   .  52            push    edx
  00417FFC   .  6A 03         push    3
  00417FFE   .  FF15 A0114000 call    dword ptr [<&msvbvm60.__vbaFreeS>;  msvbvm60.__vbaFreeStrList
  00418004   .  83C4 10       add     esp, 10
  00418007   .  8D85 50FFFFFF lea     eax, dword ptr [ebp-B0]
  0041800D   .  50            push    eax
  0041800E   .  8D8D 60FFFFFF lea     ecx, dword ptr [ebp-A0]
  00418014   .  51            push    ecx
  00418015   .  8D95 70FFFFFF lea     edx, dword ptr [ebp-90]
  0041801B   .  52            push    edx
  0041801C   .  6A 03         push    3
  0041801E   .  FF15 30104000 call    dword ptr [<&msvbvm60.__vbaFreeV>;  msvbvm60.__vbaFreeVarList
  00418024   .  83C4 10       add     esp, 10
  00418027   .  C745 FC 87000>mov     dword ptr [ebp-4], 87
  0041802E   .  C785 48FFFFFF>mov     dword ptr [ebp-B8], 80020004
  00418038   .  C785 40FFFFFF>mov     dword ptr [ebp-C0], 0A
  00418042   .  C785 58FFFFFF>mov     dword ptr [ebp-A8], 80020004
  0041804C   .  C785 50FFFFFF>mov     dword ptr [ebp-B0], 0A
  00418056   .  C785 68FFFFFF>mov     dword ptr [ebp-98], 80020004
  00418060   .  C785 60FFFFFF>mov     dword ptr [ebp-A0], 0A
  0041806A   .  68 DC8F4000   push    00408FDC
  0041806F   .  8B45 08       mov     eax, dword ptr [ebp+8]
  00418072   .  66:8B48 5C    mov     cx, word ptr [eax+5C]
  00418076   .  51            push    ecx
  00418077   .  FF15 08104000 call    dword ptr [<&msvbvm60.__vbaStrI2>;  msvbvm60.__vbaStrI2
  0041807D   .  8BD0          mov     edx, eax
  0041807F   .  8D4D A4       lea     ecx, dword ptr [ebp-5C]
  00418082   .  FF15 08124000 call    dword ptr [<&msvbvm60.__vbaStrMo>;  msvbvm60.__vbaStrMove
  00418088   .  50            push    eax                              ; /String
  00418089   .  FF15 5C104000 call    dword ptr [<&msvbvm60.__vbaStrCa>; \__vbaStrCat
  0041808F   .  8BD0          mov     edx, eax
  00418091   .  8D4D A0       lea     ecx, dword ptr [ebp-60]
  00418094   .  FF15 08124000 call    dword ptr [<&msvbvm60.__vbaStrMo>;  msvbvm60.__vbaStrMove
  0041809A   .  50            push    eax
  0041809B   .  68 04904000   push    00409004                         ; /String = "!k",0C,"",FF,"貜iRYO"
  004180A0   .  FF15 5C104000 call    dword ptr [<&msvbvm60.__vbaStrCa>; \__vbaStrCat
  004180A6   .  8BD0          mov     edx, eax
  004180A8   .  8D4D 9C       lea     ecx, dword ptr [ebp-64]
  004180AB   .  FF15 08124000 call    dword ptr [<&msvbvm60.__vbaStrMo>;  msvbvm60.__vbaStrMove
  004180B1   .  50            push    eax
  004180B2   .  8B55 08       mov     edx, dword ptr [ebp+8]
  004180B5   .  66:B8 1E00    mov     ax, 1E
  004180B9   .  66:2B42 5C    sub     ax, word ptr [edx+5C]
  004180BD   .  0F80 4B0E0000 jo      00418F0E                                                              修改这里为jmp可以跳过烦人的使用次数对话框    {4}
  004180C3   .  50            push    eax
  004180C4   .  FF15 08104000 call    dword ptr [<&msvbvm60.__vbaStrI2>;  msvbvm60.__vbaStrI2
  004180CA   .  8BD0          mov     edx, eax
  004180CC   .  8D4D 98       lea     ecx, dword ptr [ebp-68]
  004180CF   .  FF15 08124000 call    dword ptr [<&msvbvm60.__vbaStrMo>;  msvbvm60.__vbaStrMove
  004180D5   .  50            push    eax                              ; /String
  004180D6   .  FF15 5C104000 call    dword ptr [<&msvbvm60.__vbaStrCa>; \__vbaStrCat
  004180DC   .  8BD0          mov     edx, eax
  004180DE   .  8D4D 94       lea     ecx, dword ptr [ebp-6C]
  004180E1   .  FF15 08124000 call    dword ptr [<&msvbvm60.__vbaStrMo>;  msvbvm60.__vbaStrMove
  004180E7   .  50            push    eax
  004180E8   .  68 14904000   push    00409014                         ; /String = "!k",01,"",FF,""
  004180ED   .  FF15 5C104000 call    dword ptr [<&msvbvm60.__vbaStrCa>; \__vbaStrCat
  004180F3   .  8985 78FFFFFF mov     dword ptr [ebp-88], eax
  004180F9   .  C785 70FFFFFF>mov     dword ptr [ebp-90], 8
  00418103   .  8D8D 40FFFFFF lea     ecx, dword ptr [ebp-C0]
  00418109   .  51            push    ecx
  0041810A   .  8D95 50FFFFFF lea     edx, dword ptr [ebp-B0]
  00418110   .  52            push    edx
  00418111   .  8D85 60FFFFFF lea     eax, dword ptr [ebp-A0]
  00418117   .  50            push    eax
  00418118   .  6A 40         push    40
  0041811A   .  8D8D 70FFFFFF lea     ecx, dword ptr [ebp-90]
  00418120   .  51            push    ecx
  00418121   .  FF15 94104000 call    dword ptr [<&msvbvm60.rtcMsgBox>>;  msvbvm60.rtcMsgBox                   {1}  原始位置停在这里“呼叫提示框”
  00418127   .  8D55 94       lea     edx, dword ptr [ebp-6C]
  0041812A   .  52            push    edx
  0041812B   .  8D45 98       lea     eax, dword ptr [ebp-68]
  0041812E   .  50            push    eax
  
  
  好了我们通过上面的代码可以看出怎么爆破了吧!
  在上面这段代码中我们可以修改{2}{4}或是{3}这两段代码来爆破成使用无数次效果是一样的都不出现提示框“嘿嘿如果你想看那个对话框的话就不要改{4}了,不过很烦人的哦”虽然注册不成功但是无数次使用
  功能不减少那是什么???“相当与注册了吧 ^_^ ”
  
  
  最后的方法:爆破破注册
  
  顺着代码往上找来到这里:
  
  00417CFF   .  50            push    eax
  00417D00   .  6A 02         push    2
  00417D02   .  FF15 A0114000 call    dword ptr [<&msvbvm60.__vbaFreeStrLis>;  msvbvm60.__vbaFreeStrList
  00417D08   .  83C4 0C       add     esp, 0C
  00417D0B   .  C745 FC 7D000>mov     dword ptr [ebp-4], 7D
  00417D12   .  8B4D C0       mov     ecx, dword ptr [ebp-40]
  00417D15   .  51            push    ecx
  00417D16   .  68 288C4000   push    00408C28
  00417D1B   .  FF15 D0104000 call    dword ptr [<&msvbvm60.__vbaStrCmp>]   ;  msvbvm60.__vbaStrCmp
  00417D21   .  85C0          test    eax, eax
  00417D23      0F85 51010000 jnz     00417E7A                                                                    修改这里jnz为je即可注册用户名序列号随便
  00417D29   .  C745 FC 7E000>mov     dword ptr [ebp-4], 7E
  00417D30   .  8B55 08       mov     edx, dword ptr [ebp+8]
  00417D33   .  8B02          mov     eax, dword ptr [edx]
  00417D35   .  8B4D 08       mov     ecx, dword ptr [ebp+8]
  00417D38   .  51            push    ecx
  00417D39   .  FF90 2C030000 call    dword ptr [eax+32C]
  00417D3F   .  50            push    eax
  00417D40   .  8D55 90       lea     edx, dword ptr [ebp-70]
  00417D43   .  52            push    edx
  00417D44   .  FF15 90104000 call    dword ptr [<&msvbvm60.__vbaObjSet>]   ;  msvbvm60.__vbaObjSet
  00417D4A   .  8985 ACFEFFFF mov     dword ptr [ebp-154], eax
  00417D50   .  68 187D4000   push    00407D18                              ;  UNICODE "89"
  
  为什么自己慢慢分析吧!嘿嘿!
  
  注册信息和使用次数在“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\QQPP”下

--------------------------------------------------------------------------------
【经验总结】
  1:    对付一般ASPack壳的快速方法可以用我所称的四步法试试查找popad4次
  retn    0C
  push    0      两个retn是这个壳的特性
  retn  
  出现这三句的时候一般就oep就出来了!
  2:   破解自校验时注意出来的提示对症下断点
  3:破解使用次数时可以用上面的暂停法试试,说不定比你下端点还快.

后话:
学习破解真的是件很枯燥的事情尤其是对于我这种初中毕业生来说,汇编是个门槛,工具的使用也是个门槛,英语还是个门槛,但是我相信只要努力没有办不到的事情!
希望大家多多的帮助!希望菜鸟们早些变成老鸟!谢谢帮助我的朋友!
座右铭:有思路就有出路,思路决定出路!
最后祝福大家新年快乐!在新的一年有个好的开始!!!
     
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2008年02月06日 16:49:11

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
2
很长,很暴力。
沙发
2008-2-6 17:21
0
雪    币: 189
活跃值: (46)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
支持一个!作为新年礼物确实不错,可惜我给自己的新年礼物到现在都没搞定……看来是无望了啊,晚上还是老老实实看下春晚吧,呵呵!
另借地:
祝大家新年快乐!
祝看雪鼠年更旺!
2008-2-6 17:28
0
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
4
此帖于 2008-02-06 17:23 被 b笨小孩b 编辑. 原因: 空白太多,修改下!!

我还以为你那空白处有图片呢!

祝看雪论坛的朋友们春节快乐!
2008-2-6 17:34
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
赶在年前发没注意,呵呵!
2008-2-6 17:36
0
雪    币: 239
活跃值: (10)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
6
庆祝新年来关税啦 Orz
2008-2-6 18:19
0
游客
登录 | 注册 方可回帖
返回
//