首页
社区
课程
招聘
[原创]将软件注册机制藏在API中
发表于: 2015-3-28 15:25 10050

[原创]将软件注册机制藏在API中

2015-3-28 15:25
10050

把软件的注册机制隐藏在API里最大的好处就是不容易被破解者发现,因为他们经常会用OD的F8快捷键步过API,很少有人跟进去看把?
  原理比较简单,主要是利用了流行的HOOK技术,至于怎么HOOK完全取决于你,反正要能改变API函数的流程即可。
如果选的HOOK点适当,我觉得这一招还是很阴的....
选来选去,我觉的MessageBoxA比较符合我的要求。
考虑下面的代码:

if(key==2)
{
    MessageBox(XXX,"注册失败!","err",MB_OK);
}else
{
//这个只是假的成功把。
    MessageBox(0,"注册成功!","err",MB_OK)
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 3
支持
分享
最新回复 (27)
雪    币: 1632
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
见识过,哈哈哈
2015-3-28 16:54
0
雪    币: 11196
活跃值: (3140)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
支持, 上个易语言代码
2015-3-28 17:53
0
雪    币: 1626
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
真的见识到了...感谢楼主TAT
2015-3-28 17:55
0
雪    币: 485
活跃值: (78)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
作用不大~~首先,你这个HOOK会引起分析者的注意,其次不论你的验证机制放在哪里都一样,最终都会有成功的提示或者失败的提示,沿着这些提示还是能找到关键点。。。。
2015-3-28 18:13
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
牛!!!
2015-3-28 18:18
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
几次破解失败的话还是会仔细的看一遍,不跳过这些部分的。不过学到了,不会被HOOK阴了
2015-3-28 18:31
0
雪    币: 292
活跃值: (153)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
我只想说:还是要走逻辑............关键还是怎么打乱逻辑........
2015-3-28 19:31
0
雪    币: 8
活跃值: (68)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
又涨姿势了
2015-3-29 19:28
0
雪    币: 150
活跃值: (36)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
有点类似借鸡生蛋,想法不错~~~
2015-3-29 20:34
0
雪    币: 81
活跃值: (110)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
又不傻。
2015-4-8 16:46
0
雪    币: 10694
活跃值: (3599)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
要不楼主写一个程序,我试试爆破。
2015-4-17 20:05
0
雪    币: 0
活跃值: (226)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
这个写的非常不错 小菜学习中 感谢楼主发布精彩文章 看雪有你更精彩
2015-4-18 21:51
0
雪    币: 6911
活跃值: (9079)
能力值: ( LV17,RANK:797 )
在线值:
发帖
回帖
粉丝
14
好的可以哦
链接:http://pan.baidu.com/s/1nth1H7j 密码:ejch
2015-4-18 22:16
0
雪    币: 10694
活跃值: (3599)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
15
明天试试看。
2015-4-18 22:36
0
雪    币: 10694
活跃值: (3599)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
16


好像没什么难度,不知是不是你想要的结果。下面是分析过程:

程序加了壳,不过很简单。用不了几分钟!
我们下getwindowtextA断点,随便输入注册码,点击注册。
程序断在下面:
770E6EED >  6A 08           push    0x8
770E6EEF    68 486F0E77     push    770E6F48
770E6EF4    E8 27550100     call    770FC420

几个F8后:
004078F7    E8 07AA0000     call    00412303
004078FC    83C4 10         add     esp, 0x10                        ; 返回到这里

继续F8,然后程序再次中断在getwindowtextA断点。
770E6EED >  6A 08           push    0x8
770E6EEF    68 486F0E77     push    770E6F48
770E6EF4    E8 27550100     call    770FC420
770E6EF9    8B7D 0C         mov     edi, dword ptr [ebp+0xC]

几个F8后:
00407A13    E8 EBA80000     call    00412303
00407A18    83C4 10         add     esp, 0x10                        ; 返回到这里
00407A1B    8945 F8         mov     dword ptr [ebp-0x8], eax
00407A1E    EB 01           jmp     short 00407A21
00407A20    B4 EB           mov     ah, 0xEB
00407A22    017F EB         add     dword ptr [edi-0x15], edi
00407A25    0175 68         add     dword ptr [ebp+0x68], esi
00407A28    F3:             prefix rep:
00407A29    60              pushad
00407A2A    40              inc     eax
00407A2B    00EB            add     bl, ch
00407A2D    010F            add     dword ptr [edi], ecx
00407A2F    FF75 F8         push    dword ptr [ebp-0x8]
00407A32    E8 05FEFFFF     call    0040783C
00407A37    83C4 08         add     esp, 0x8
00407A3A    83F8 00         cmp     eax, 0x0
00407A3D    B8 00000000     mov     eax, 0x0
00407A42    0F95C0          setne   al
00407A45    8945 F4         mov     dword ptr [ebp-0xC], eax
00407A48    8B5D F8         mov     ebx, dword ptr [ebp-0x8]
00407A4B    85DB            test    ebx, ebx
00407A4D    74 09           je      short 00407A58                   ; 这里你可以看到在ecx保存你的正确注册码:ABCDEFGH

00407A4F    53              push    ebx
00407A50    E8 8AA80000     call    004122DF
00407A55    83C4 04         add     esp, 0x4
00407A58    837D F4 00      cmp     dword ptr [ebp-0xC], 0x0
00407A5C    0F84 FB000000   je      00407B5D                         ; 关键跳转
上传的附件:
2015-4-19 08:54
0
雪    币: 6911
活跃值: (9079)
能力值: ( LV17,RANK:797 )
在线值:
发帖
回帖
粉丝
17
错误提示借用一下HOOK的函数就可以了。
所以我选MessageBoxA
2015-4-19 08:59
0
雪    币: 10694
活跃值: (3599)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
18
我的分析只用了getwindowtextA,系统读取字符都要用到。
2015-4-19 09:02
0
雪    币: 6911
活跃值: (9079)
能力值: ( LV17,RANK:797 )
在线值:
发帖
回帖
粉丝
19
不对,你没有成功哦。
成功了会放歌的。
2015-4-19 09:04
0
雪    币: 6911
活跃值: (9079)
能力值: ( LV17,RANK:797 )
在线值:
发帖
回帖
粉丝
20
正确的注册码也不是ABCDEFG
2015-4-19 09:06
0
雪    币: 6911
活跃值: (9079)
能力值: ( LV17,RANK:797 )
在线值:
发帖
回帖
粉丝
21
不对,你没有成功哦。
成功了会放歌的。
2015-4-19 09:08
0
雪    币: 10694
活跃值: (3599)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
22
好的,我再看看,因为我怕你骗我!
2015-4-19 09:19
0
雪    币: 10694
活跃值: (3599)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
23
确实有难度,里面的花指令看着就眼花!有没有源代码看看?
2015-4-19 12:28
0
雪    币: 6911
活跃值: (9079)
能力值: ( LV17,RANK:797 )
在线值:
发帖
回帖
粉丝
24
厂商会给破解者提供源代码?
2015-4-19 12:31
0
雪    币: 10694
活跃值: (3599)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
25


这种加密方式还是有问题的,只是那个花指令比较恶心,手动去掉后不难分析。
上传的附件:
2015-4-19 18:29
0
游客
登录 | 注册 方可回帖
返回
//