iawen 发表于 2007-10-8 01:07:20

只好超级函数表达式运算器v12

【文章标题】: 爆破超级函数表达式运算器v12
【文章作者】: iawen
【作者邮箱】: [email protected]
【作者QQ号】: 160193626
【软件名称】: 超级函数表达式运算器v12
【下载地址】: 自己搜索下载
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】

论坛上的那个补丁,不知道为什么在我电脑上不能运行,只好自己动手了,呵呵

第一步:查壳,并脱之:

00438E00 超> /EB 06               jmp short 超级函数.00438E08
        //OD载入后,停留在此
00438E02    |68 C4160000         push 16C4
00438E07    |C3                  retn
00438E08    \9C                  pushfd
00438E09   60                  pushad
00438E0A   E8 02000000         call 超级函数.00438E11
        //单步运行到此,查看寄存器有ESP值:=0012FFA0
        //下断:hr 0012FFA0,F9运行

0043A54F   9D                  popfd
        //程序中断在此处了,
0043A550   50                  push eax
0043A551   68 C4164000         push 超级函数.004016C4                               ; ASCII "h(^A"
        //这就是程序的OEP了,hehe……
0043A556   C2 0400             retn 4


单步运行,程序返回到:
004016C4   68 285E4100         push 超级函数.00415E28
        //脱壳了,…………

004016C9   E8 EEFFFFFF         call 超级函数.004016BC                               ; jmp to MSVBVM50.ThunRTMain
004016CE   0000                add byte ptr ds:,al
004016D0   0000                add byte ptr ds:,al
004016D2   0000                add byte ptr ds:,al


第二步:爆破之:
        试运行脱壳后的程序,首先弹出上个对话框,

由于程序是VB写的,而我搜索了一下参考字符,结果没有想下了的,只好直接下断:bp rtcMsgBox,程序中断在:
0F0D405A M>55                  push ebp
0F0D405B   8B4424 14         mov eax,dword ptr ss:
0F0D405F   8BEC                mov ebp,esp
0F0D4061   83EC 48             sub esp,48

查看堆栈:
0012F8B0   00431A08返回到 12.00431A08 来自 MSVBVM50.rtcMsgBox
0012F8B4   0012FA30

在0012F8B0   00431A08返回到 12.00431A08 来自 MSVBVM50.rtcMsgBox行上,点右键-->反汇编窗口跟随,来到:
004319FB   8D95 74FFFFFF       lea edx,dword ptr ss:
00431A01   52                  push edx
00431A02   FF15 1C724300       call dword ptr ds:[<&MSVBVM50.rtcMsgBox>]      ; MSVBVM50.rtcMsgBox
00431A08   8D45 8C             lea eax,dword ptr ss:

我们向上找关键跳,跳的地址一定要大干00431A02,不然就不能跳过提示窗口了:

向上的第一个跳:0043190E    /0F85 900A0000       jnz 12.004323A4
我们过去看看,呵呵是异常信息,忽略,继续:

找到了:
00430EB6   85D8                test eax,ebx
00430EB8   0F85 28100000       jnz 12.00431EE6

下断,重新载入运行,程序断在了我们下断的位置了
我们试着改jnz 12.00431EE6为:jmp 12.00431EE6

单步到:
00431EE6   8D95 74FFFFFF       lea edx,dword ptr ss:
        //在这下个断,或者记录一下
00431EEC   52                  push edx
00431EED   8B1D F8724300       mov ebx,dword ptr ds:[<&MSVBVM50.rtcGetDateVar>] ; MSVBVM50.rtcGetDateVar
00431EF3   FFD3                call ebx

F9运行一下!

哦,原来的弹出窗口没有了,不过又出现了一个新窗口,我们继续吧!

再次重新载入运行到:
00431EE6   8D95 74FFFFFF       lea edx,dword ptr ss:

这次我们是往下查看了,并记下跳转的命令,直到出现对rctMsgBox的调用了,呵呵!
00432112   85F6                test esi,esi
00432114   0F85 AF010000       jnz 12.004322C9
                //关键跳

0043229B   52                  push edx
0043229C   FF15 1C724300       call dword ptr ds:[<&MSVBVM50.rtcMsgBox>]      ; MSVBVM50.rtcMsgBox

哈哈,就一个关键跳,而且跳出地址也出了对对话框的调用,
同样,我们试着改jnz 12.004322C9为:jmp 12.004322C9
按F9运行,哈哈,程序成功运行,没有出现弹出窗口!!!!


胜利第一步走完了,接下来随便测试一下功能有没有限制!
随便点了一下,在运算结果栏出现了:“功能受限,请注册后再使用”


我打开WinHex,打开程序主存,搜索“功能受限”,找到地址:

然后在OD命令窗口中下断:
hr 00152FF8
在程序窗口随便测试了一下,然后中断了下来:
7C94B408   8B448E F0         mov eax,dword ptr ds:
7C94B40C   89448F F0         mov dword ptr ds:,eax
7C94B410   8B448E F4         mov eax,dword ptr ds:

删除硬件断点后,按Alt+F9,返回程序领空:
0042FCFC   85C0                test eax,eax
0042FCFE   7D 12               jge short 12.0042FD12

向上,找到入口:
0042FAB0   55                  push ebp
        //在此下断,F9运行程序,然后继续测试,程序中断在此了,hehe
0042FAB1   8BEC                mov ebp,esp
0042FAB3   83EC 14             sub esp,14
0042FAB6   68 76144000         push <jmp.&MSVBVM50.__vbaExceptHandler>
0042FABB   64:A1 00000000      mov eax,dword ptr fs:
0042FAC1   50                  push eax

F8单步运行,同时注意对__vbaStrCmp及__vbaStrMove的调用:
单步到此,看到了对__vbaStrCmp的调用,并且有一个关键词:"yes"出现:
0042FB68   51                  push ecx
0042FB69   68 B49C4100         push 12.00419CB4                               ; UNICODE "yes"
0042FB6E   8B1D 54724300       mov ebx,dword ptr ds:[<&MSVBVM50.__vbaStrCmp>] ; MSVBVM50.__vbaStrCmp
0042FB74   FFD3                call ebx

随后,就在下面出现了关键跳:
0042FB97   8B8D 38FFFFFF       mov ecx,dword ptr ss:
0042FB9D   85C8                test eax,ecx
0042FB9F   0F85 7B010000       jnz 12.0042FD20

跳转没有实现,那么实现后又是怎样呢?试着改为jmp 12.0042FD20
F9运行,连续几个F9之后,出现了正确的结果了,哈!

保存修改,结果出现乱码,只好退出程序重新载入,然后一个个修改,OK!正常了,哈
但不知道为什么,一次性修改会出现乱码,还望那位老大予以指点,谢谢!

附:超级函数表达式运算器v12_Crack.rar

--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2007年10月08日 1:01:48

[ 本帖最后由 iawen 于 2007-10-8 01:09 编辑 ]

zhaoyafei19 发表于 2007-10-8 07:32:19

软件在那里下载啊
不错的计算器

wxq 发表于 2007-10-8 21:35:26

又出新版了,现在是2.0版

独眼海盗 发表于 2007-10-23 17:45:07

/:014 谢谢 学习一下
页: [1]
查看完整版本: 只好超级函数表达式运算器v12