吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4367|回复: 9
收起左侧

[原创] 160个CrakeMe程序之003

[复制链接]
hjm666 发表于 2018-5-24 09:53
本帖最后由 hjm666 于 2018-5-31 18:52 编辑

相对这个1软件比较简单

一、基础信息
软件页面:
         
2.png          3.png        4.png
   软件有一个NAG 窗口,根据软件页面提示,需要把NAG窗口去除,然后再进行注册软件

查看下事件:

11.png

有三个需要注意的事件。。   (软件VB Decompiler )

查壳:

1.png

   vb作品,无壳

二、去除NAG窗口
由于太久没有做过去除NAG这件事。。。。。
所以我选择百度一下。。。
三个事件中有个 Time 事件很可疑,于是百度之。。。发现是窗口的时间事件,同时也找到了几个适合用来去除NAG窗口的方法。

方法一:
百度知道vb Time函数有一个interval 用来控制NAG存在的时间,可以从此处入手,
想起一款用过的vb反汇编软件   vbexplorer
     将interval 的值修改成很小再保存之就可以了
7.png

(吐槽下,这软件也是写的不好关了都还有进程···)


方法二:
用 hex编辑软件载入
         5.png          6.png

找到这段二进制  修改030b 后面两个进制就可以 如:0100 nag窗口存在一毫秒

方法三:
由看雪论坛大佬总结的4C法,学了这个方法后我迅速去找了下出处。。。。很遗憾的是大佬并未解释这个方法的原理是什么,可能vb编写大佬一看就懂吧

  原处出至:《使用OllyDbg从零开始Cracking_CHM版 》  第二十七章   (作者是谁,看雪哪个帖子我是不知道了)
《使用OllyDbg从零开始Cracking_CHM版 》 emmmmm、、、、  这个整理了看雪大神的帖子集合特别有用,给各位偷个链接:百度云盘:http://pan.baidu.com/s/1o682Hbc

VB特点是开头push OEP 然后紧跟着一个call (如不是,就是加密了), 数据窗口中跳到这个地址 (ctrl+g)
数据窗口中右键选择 : Hex - 》 16进制 Ascii 看得更直观 ,然后再 跳到 OEP 加 4c 地址 (ctrl+ g)
    9.png     10.png
选中那行地址右键  数据窗口跟随 DOWRD,  可以看到两段差异不大的数据 将这两个 00  01 调换一下修改保存即可 (注:图中的是我已经修改过的)



三、暴力破解
[Asm] 纯文本查看 复制代码
00408668   .  8945 94       mov dword ptr ss:[ebp-0x6C],eax
0040866B   .  894D AC       mov dword ptr ss:[ebp-0x54],ecx
0040866E   .  8945 A4       mov dword ptr ss:[ebp-0x5C],eax
00408671   .  894D BC       mov dword ptr ss:[ebp-0x44],ecx
00408674   .  8945 B4       mov dword ptr ss:[ebp-0x4C],eax
00408677   .  74 62         je short AfKayAs_.004086DB               ;  关键跳转
00408679   .  8B35 14B14000 mov esi,dword ptr ds:[<&msvbvm50.__vbaSt>;  msvbvm50.__vbaStrCat
0040867F   .  68 C06F4000   push AfKayAs_.00406FC0                   ;  UNICODE "You Get It"
00408684   .  68 DC6F4000   push AfKayAs_.00406FDC                   ; /String = ""
00408689   .  FFD6          call esi                                 ; \__vbaStrCat
0040868B   .  8BD0          mov edx,eax
0040868D   .  8D4D E8       lea ecx,dword ptr ss:[ebp-0x18]




  关键跳转改标志位即可完成暴力破解


8.png




四、注册机探寻
关键事件代码太繁琐,无用代码太多 就不全部放上来了,只放关键代码


[Asm] 纯文本查看 复制代码
004081E2   .  50            push eax
004081E3   .  FF15 18B14000 call dword ptr ds:[<&msvbvm50.__vbaHresu>;  msvbvm50.__vbaHresultCheckObj
004081E9   >  8B95 50FFFFFF mov edx,dword ptr ss:[ebp-0xB0]
004081EF   .  8B45 E4       mov eax,dword ptr ss:[ebp-0x1C]          ;  用户名
004081F2   .  50            push eax                                 ; /String = 0000000A ???
004081F3   .  8B1A          mov ebx,dword ptr ds:[edx]               ; |
004081F5   .  FF15 F8B04000 call dword ptr ds:[<&msvbvm50.__vbaLenBs>; \_vbaLenBstr  计算字符长度
004081FB   .  8BF8          mov edi,eax                              ;  eax字符长度
004081FD   .  8B4D E8       mov ecx,dword ptr ss:[ebp-0x18]
00408200   .  69FF 385B0100 imul edi,edi,0x15B38                     ;  edi * 15B38 -> edi
00408206   .  51            push ecx                                 ; /String = 80020004 ???
00408207   .  0F80 B7050000 jo AfKayAs_.004087C4                     ; |跳空
0040820D   .  FF15 0CB14000 call dword ptr ds:[<&msvbvm50.rtcAnsiVal>; \rtcAnsiValueBstr ;函数 Asc(string)
00408213   .  0FBFD0        movsx edx,ax
00408216   .  03FA          add edi,edx                              ;  用户名首字母16进制 加  edi -> edi
00408218   .  0F80 A6050000 jo AfKayAs_.004087C4                     ;  跳空
0040821E   .  57            push edi                                 ;  msvbvm50.__vbaObjSet
0040821F   .  FF15 F4B04000 call dword ptr ds:[<&msvbvm50.__vbaStrI4>;  vbaStrI4  将edi转换成10进制
00408225   .  8BD0          mov edx,eax
00408227   .  8D4D E0       lea ecx,dword ptr ss:[ebp-0x20]
0040822A   .  FF15 94B14000 call dword ptr ds:[<&msvbvm50.__vbaStrMo>;  _vbaStrMove 字符移动
00408230   .  8BBD 50FFFFFF mov edi,dword ptr ss:[ebp-0xB0]
00408236   .  50            push eax
00408237   .  57            push edi                                 ;  msvbvm50.__vbaObjSet
00408238   .  FF93 A4000000 call dword ptr ds:[ebx+0xA4]
0040823E   .  85C0          test eax,eax






[Asm] 纯文本查看 复制代码
004082E9   .  FF15 74B14000 call dword ptr ds:[<&msvbvm50.__vbaR8Str>;  __vbar8Str   将一个字符串转为双精度单精度浮点型(8个字节)的数值形式
004082EF   .  D905 08104000 fld dword ptr ds:[0x401008]              ;  FLD 指令用于把浮点数字传送入和传送出FPU寄存器.  401008 =10.00000
004082F5   .  833D 00904000>cmp dword ptr ds:[0x409000],0x0
004082FC   .  75 08         jnz short AfKayAs_.00408306
004082FE   .  D835 0C104000 fdiv dword ptr ds:[0x40100C]             ;  10 /5  浮点除   40100C =5.0
00408304   .  EB 0B         jmp short AfKayAs_.00408311
00408306   >  FF35 0C104000 push dword ptr ds:[0x40100C]
0040830C   .  E8 578DFFFF   call <jmp.&msvbvm50._adj_fdiv_m32>
00408311   >  83EC 08       sub esp,0x8
00408314   .  DFE0          fstsw ax
00408316   .  A8 0D         test al,0xD
00408318   .  0F85 A1040000 jnz AfKayAs_.004087BF
0040831E   .  DEC1          faddp st(1),st                           ;  edi +  2    ??
00408320   .  DFE0          fstsw ax
00408322   .  A8 0D         test al,0xD
00408324   .  0F85 95040000 jnz AfKayAs_.004087BF
0040832A   .  DD1C24        fstp qword ptr ss:[esp]
0040832D   .  FF15 48B14000 call dword ptr ds:[<&msvbvm50.__vbaStrR8>;  __vbaR8Var ;转换成浮点数,结果在浮点寄存器里
00408333   .  8BD0          mov edx,eax
00408335   .  8D4D E4       lea ecx,dword ptr ss:[ebp-0x1C]
00408338   .  FF15 94B14000 call dword ptr ds:[<&msvbvm50.__vbaStrMo>;  _vbaStrMove 字符移动




[Asm] 纯文本查看 复制代码
004083F2   .  52            push edx
004083F3   .  8B19          mov ebx,dword ptr ds:[ecx]
004083F5   .  FF15 74B14000 call dword ptr ds:[<&msvbvm50.__vbaR8Str>;  __vbar8Str   将一个字符串转为双精度单精度浮点型(8个字节)的数值形式
004083FB   .  DC0D 10104000 fmul qword ptr ds:[0x401010]             ;  401010  - > 3.0    ;(edi+2)*3
00408401   .  83EC 08       sub esp,0x8
00408404   .  DC25 18104000 fsub qword ptr ds:[0x401018]             ;  401018 -> 2    (edi+2)*3-2
0040840A   .  DFE0          fstsw ax
0040840C   .  A8 0D         test al,0xD
0040840E   .  0F85 AB030000 jnz AfKayAs_.004087BF
00408414   .  DD1C24        fstp qword ptr ss:[esp]
00408417   .  FF15 48B14000 call dword ptr ds:[<&msvbvm50.__vbaStrR8>;  __vbaR8Var ;转换成浮点数,结果在浮点寄存器里
0040841D   .  8BD0          mov edx,eax
0040841F   .  8D4D E4       lea ecx,dword ptr ss:[ebp-0x1C]
00408422   .  FF15 94B14000 call dword ptr ds:[<&msvbvm50.__vbaStrMo>;  _vbaStrMove 字符移动
00408428   .  899D 2CFFFFFF mov dword ptr ss:[ebp-0xD4],ebx
0040842E   .  8B9D 58FFFFFF mov ebx,dword ptr ss:[ebp-0xA8]
00408434   .  50            push eax
00408435   .  8B85 2CFFFFFF mov eax,dword ptr ss:[ebp-0xD4]




[Asm] 纯文本查看 复制代码
004084DD   .  8B19          mov ebx,dword ptr ds:[ecx]
004084DF   .  FF15 74B14000 call dword ptr ds:[<&msvbvm50.__vbaR8Str>;  __vbar8Str   将一个字符串转为双精度单精度浮点型(8个字节)的数值形式
004084E5   .  DC25 20104000 fsub qword ptr ds:[0x401020]             ;  401020  -> -15    (edi+2)*3-2-(-15)
004084EB   .  83EC 08       sub esp,0x8
004084EE   .  DFE0          fstsw ax
004084F0   .  A8 0D         test al,0xD
004084F2   .  0F85 C7020000 jnz AfKayAs_.004087BF
004084F8   .  DD1C24        fstp qword ptr ss:[esp]
004084FB   .  FF15 48B14000 call dword ptr ds:[<&msvbvm50.__vbaStrR8>;  __vbaR8Var ;转换成浮点数,结果在浮点寄存器里
00408501   .  8BD0          mov edx,eax
00408503   .  8D4D E4       lea ecx,dword ptr ss:[ebp-0x1C]
00408506   .  FF15 94B14000 call dword ptr ds:[<&msvbvm50.__vbaStrMo>;  _vbaStrMove 字符移动
0040850C   .  899D 24FFFFFF mov dword ptr ss:[ebp-0xDC],ebx
00408512   .  8B9D 58FFFFFF mov ebx,dword ptr ss:[ebp-0xA8]
00408518   .  50            push eax
00408519   .  8B85 24FFFFFF mov eax,dword ptr ss:[ebp-0xDC]
0040851F   .  53            push ebx
00408520   .  FF90 A4000000 call dword ptr ds:[eax+0xA4]
00408526   .  85C0          test eax,eax
00408528   .  7D 12         jge short AfKayAs_.0040853C




[Asm] 纯文本查看 复制代码
004085BC   .  68 A0000000   push 0xA0
004085C1   .  68 AC6F4000   push AfKayAs_.00406FAC
004085C6   .  56            push esi
004085C7   .  50            push eax
004085C8   .  FF15 18B14000 call dword ptr ds:[<&msvbvm50.__vbaHresu>;  msvbvm50.__vbaHresultCheckObj
004085CE   >  8B45 E8       mov eax,dword ptr ss:[ebp-0x18]
004085D1   .  50            push eax
004085D2   .  FF15 74B14000 call dword ptr ds:[<&msvbvm50.__vbaR8Str>;  __vbar8Str   将一个字符串转为双精度单精度浮点型(8个字节)的数值形式
004085D8   .  8B4D E4       mov ecx,dword ptr ss:[ebp-0x1C]
004085DB   .  DD9D 1CFFFFFF fstp qword ptr ss:[ebp-0xE4]             ;  载入输入的序列号
004085E1   .  51            push ecx
004085E2   .  FF15 74B14000 call dword ptr ds:[<&msvbvm50.__vbaR8Str>;  __vbar8Str   将一个字符串转为双精度单精度浮点型(8个字节)的数值形式
004085E8   .  833D 00904000>cmp dword ptr ds:[0x409000],0x0




[Asm] 纯文本查看 复制代码
00408665   .  66:85F6       test si,si                               ;  改变标志位
00408668   .  8945 94       mov dword ptr ss:[ebp-0x6C],eax
0040866B   .  894D AC       mov dword ptr ss:[ebp-0x54],ecx
0040866E   .  8945 A4       mov dword ptr ss:[ebp-0x5C],eax
00408671   .  894D BC       mov dword ptr ss:[ebp-0x44],ecx
00408674   .  8945 B4       mov dword ptr ss:[ebp-0x4C],eax
00408677   .  74 62         je short AfKayAs_.004086DB               ;  关键跳转
00408679   .  8B35 14B14000 mov esi,dword ptr ds:[<&msvbvm50.__vbaSt>;  msvbvm50.__vbaStrCat
0040867F   .  68 C06F4000   push AfKayAs_.00406FC0                   ;  UNICODE "You Get It"
00408684   .  68 DC6F4000   push AfKayAs_.00406FDC                   ; /String = ""
00408689   .  FFD6          call esi                                 ; \__vbaStrCat
0040868B   .  8BD0          mov edx,eax
0040868D   .  8D4D E8       lea ecx,dword ptr ss:[ebp-0x18]
00408690   .  FF15 94B14000 call dword ptr ds:[<&msvbvm50.__vbaStrMo>;  msvbvm50.__vbaStrMove
00408696   .  50            push eax




总结一下:
取用户名的长度*15B38 +  取用户名第一个字符的16进制  结果转换成10进制  ,再转换成浮点数 进行了  +2 *3 -2 -(-15) 一系列操作




注册机:
[C] 纯文本查看 复制代码
#include<stdio.h>
#include<string.h>
#include<iostream> 
int main()
{
        int len,key;
        char name[50]={0};
        printf("Input yous name:\n");
        scanf("%s",&name);
        len=strlen(name);
        key=4*88888+name[0]+2;  //  15B38 -> 88888
        key=key*3-2-(-15);
        printf("The key is:\n");
        printf("%d\n",key);
        system("pause");
        return 0;
}





就此完结,总的说比较简单
                 如有错误,还请大佬指出,不胜感激!!!


免费评分

参与人数 5威望 +1 吾爱币 +13 热心值 +5 收起 理由
CrazyNut + 1 + 1 用心讨论,共获提升!
sunnylds7 + 1 我很赞同!
Hmily + 1 + 10 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
ipc2008 + 1 + 1 用心讨论,共获提升!
SnowRen + 1 + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

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

SnowRen 发表于 2018-5-24 10:32
很详细的分析,给你顶起来
小权666 发表于 2018-5-24 10:40
极客天空 发表于 2018-5-24 11:08
bilei530 发表于 2018-5-24 11:37
感谢楼主 学习了~~~~~~~~~~~~~~~~
Taobi 发表于 2018-5-24 12:32
可以的,谢谢楼主分享
wdlcshpzjfxx 发表于 2018-5-24 13:28
谢谢分享,老大
jmpengbo 发表于 2018-5-24 13:55
学习了。
井中观 发表于 2018-5-24 23:26
谢谢分享
兔司机 发表于 2018-5-25 20:54
感谢分享  吾爱有你更精彩
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-17 01:56

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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