某计算软件爆破破解,求各位大神指点一下
一、声明:本教程仅供研究学习,请在24小时之内删除相关软件、忘记相关内容。(以上例行公事)求各位大神指点一二,小弟刚刚接手逆向。还有不足之处望各位大神海涵。二、环境说明
操作系统:Winxp虚拟机
使用工具: peid、OD
2.目标程序:链接: http://pan.baidu.com/s/1c25r7mK 密码: uybk
3:破解过程:首先peid查壳
经过查找时vb编写的程序。不需要脱壳处理。
其次OD载入
先运行查看一下套路是什么。OD界面F9运行,
随便输入密码666666666,然后检查口令
那么先把这个弄掉。OD重新载入。
中文搜索引擎→智能搜索。
左键双击请插入正确光盘
0072B5D5 .C745 84 03000>mov dword ptr ss:,0x3
0072B5DC .FF15 18104000 call dword ptr ds:[<&MSVBVM60.__vbaVarMove>] ;msvbvm60.__vbaVarMove
0072B5E2 .57 push edi ;悬挂运输.00635558
0072B5E3 .E8 402AD5FF call 悬挂运输.0047E028
0072B5E8 .8BF8 mov edi,eax
0072B5EA .FF15 38104000 call dword ptr ds:[<&MSVBVM60.__vbaSetSystemError>] ;msvbvm60.__vbaSetSystemError
0072B5F0 .81FF 12D40300 cmp edi,0x3D412 我猜测这里是比较
0072B5F6 .BB 04000280 mov ebx,0x80020004
0072B5FB .74 66 je short 悬挂运输.0072B663 在这边应该是比较后的跳转。因为没光盘所以打算爆破掉它。je改成jnp,没有光盘才跳。
0072B5FD .BF 0A000000 mov edi,0xA
0072B602 .8D55 84 lea edx,dword ptr ss:
0072B605 .8D4D C4 lea ecx,dword ptr ss:
0072B608 .895D 9C mov dword ptr ss:,ebx
0072B60B .897D 94 mov dword ptr ss:,edi ;悬挂运输.00635558
0072B60E .895D AC mov dword ptr ss:,ebx
0072B611 .897D A4 mov dword ptr ss:,edi ;悬挂运输.00635558
0072B614 .895D BC mov dword ptr ss:,ebx
0072B617 .897D B4 mov dword ptr ss:,edi ;悬挂运输.00635558
0072B61A .C745 8C 70E04>mov dword ptr ss:,悬挂运输.0047E070 ;请插入正确的光盘
0072B621 .C745 84 08000>mov dword ptr ss:,0x8
0072B628 .FF15 14114000 call dword ptr ds:[<&MSVBVM60.__vbaVarDup>] ;msvbvm60.__vbaVarDup
0072B62E .8D55 94 lea edx,dword ptr ss:
0072B631 .8D45 A4 lea eax,dword ptr ss:
复制到可执行文件
od载入新的执行文件,输密码666666666后出现
中文搜索引擎→智能搜索。
左键双击口令不对
到达这里
0072B6B9 .52 push edx ; /var18 = ntdll.KiFastSystemCallRet
0072B6BA .50 push eax ; |var28 = NULL
0072B6BB .C745 D8 00000>mov dword ptr ss:,0x0 ; |
0072B6C2 .C745 C4 08800>mov dword ptr ss:,0x8008 ; |
0072B6C9 .FF15 84104000 call dword ptr ds:[<&MSVBVM60.__vbaVarTstEq>] ; \__vbaVarTstEq 这里是口令的比较
0072B6CF .8D4D D4 lea ecx,dword ptr ss:
0072B6D2 .8985 44FFFFFF mov dword ptr ss:,eax
0072B6D8 .FF15 40114000 call dword ptr ds:[<&MSVBVM60.__vbaFreeObj>] ;msvbvm60.__vbaFreeObj
0072B6DE .8D4D C4 lea ecx,dword ptr ss:
0072B6E1 .FF15 1C104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeVar>] ;msvbvm60.__vbaFreeVar
0072B6E7 .66:83BD 44FFF>cmp word ptr ss:,0x0
0072B6EF .74 3A je short 悬挂运输.0072B72B 这里跳向错误口令的弹出对话框je改为jne即可爆破
0072B6F1 .8B0E mov ecx,dword ptr ds:
0072B6F3 .56 push esi
0072B6F4 .FF91 08030000 call dword ptr ds: ;悬挂运输.0065006C
0072B6FA .8D55 D4 lea edx,dword ptr ss:
0072B6FD .50 push eax
0072B6FE .52 push edx ;ntdll.KiFastSystemCallRet
0072B6FF .FF15 4C104000 call dword ptr ds:[<&MSVBVM60.__vbaObjSet>] ;msvbvm60.__vbaObjSet
0072B705 .8BF0 mov esi,eax
0072B707 .6A FF push -0x1
0072B709 .56 push esi
0072B70A .8B06 mov eax,dword ptr ds:
0072B70C .FF90 9C000000 call dword ptr ds:
0072B712 .85C0 test eax,eax
0072B714 .DBE2 fclex
0072B716 .0F8D A7000000 jge 悬挂运输.0072B7C3
0072B71C .68 9C000000 push 0x9C
0072B721 .68 84E04700 push 悬挂运输.0047E084
0072B726 .E9 90000000 jmp 悬挂运输.0072B7BB
0072B72B >8D55 84 lea edx,dword ptr ss:
0072B72E .8D4D C4 lea ecx,dword ptr ss:
0072B731 .895D 9C mov dword ptr ss:,ebx
0072B734 .897D 94 mov dword ptr ss:,edi ;悬挂运输.006922F8
0072B737 .895D AC mov dword ptr ss:,ebx
0072B73A .897D A4 mov dword ptr ss:,edi ;悬挂运输.006922F8
0072B73D .895D BC mov dword ptr ss:,ebx
0072B740 .897D B4 mov dword ptr ss:,edi ;悬挂运输.006922F8
0072B743 .C745 8C 98E04>mov dword ptr ss:,悬挂运输.0047E098 ;口令不对,要求重新输入
0072B74A .C745 84 08000>mov dword ptr ss:,0x8
0072B751 .FF15 14114000 call dword ptr ds:[<&MSVBVM60.__vbaVarDup>] ;msvbvm60.__vbaVarD
复制到可执行文件→选择→保存文件
OK破解成功。 补充上面的疑问:VB断点拦截驱动器:
bp GetDriveTypeA 获取磁盘驱动器类型
bp GetLogicalDrives 获取逻辑驱动器标记
bp GetLogicalDriveStringsA 获取卖前一切逻辑驱动器的根驱动器路径
Hmily 发表于 2017-5-24 16:14
看0047E028关键call里对eax的赋值。
谢谢大神指点。我在弄注册机。可是注册机显示eax的值总是多出来一块。不知道为什么 软件的名字很高大上....嗯只有这样了
分支跳转确实是个万精油{:17_1078:} 学习学习,谢谢楼主分享 收藏了 留着以后慢慢学 66666666666 谢谢分享 这个没什么技术含量,随便一个新手都能破... 表示看的一脸懵逼 共同学习