首页
社区
课程
招聘
[未解决]折腾一个月了,关于网络验证机制
发表于: 2012-10-12 16:11 13447

[未解决]折腾一个月了,关于网络验证机制

2012-10-12 16:11
13447
简单介绍一下背景,本人之前是一个Java/C++开发者,没有任何破解经验,一个月之前开始尝试破解一个网络验证机制,刚开始查资料,熟悉OD,甚至花了一周来学习汇编语言,把王爽的书看了一遍,但让人啼笑皆非的是,我却还没有找到真正的算法逻辑,我已经无计可施,只好发到看雪上来,不说跪求,但也差不多了,下面我详细介绍这个算法机制。

流程是客户端发送http post到服务器,里面主要是一个xml数据,其中最重要的是一个叫做kbsync的值,如果这个值不对服务器就拒绝相应,网上有人说是RSA+BASE64算法,但不一定是标准的,下面是我的一次抓包:
<key>kbsync</key>
<data>AAQAA3pub3OF9pcJYTOg3hyiF6Qzv2/yoGxGO0ZEW0NYMAoLPZHiuGJYQmupeAVTLPV+ 9viJ3Ual4gxxBIhRoDulmSjFE1cTVwTJkL8uw8ImxdsPzHGEz73LD79AbxTVHAkLxt2P Fs3D8UZVdMrdvXtUW51vHnibEt70PigzYKIWHbPCCDjTxFFayXidTf8eli8LwYO6uooI eSVoPpsBDQRl1qyTvk7DQb/NtNnQcmhL7XRlzvdnDbUInVX4550pT1SIwg==</data>

我不用传附件了,其实就是apple itunes(最新版即可),上面的数据就是我下载免费app的时候抓的包,没有壳用OD附加都没什么问题,但问题就是我还没有找到生成kbsync的算法逻辑,一般人能想到的步骤就是“查找所有参考文本字串”,输入“kbsync”:

5DF22CE3    50              push eax
5DF22CE4    8B4424 24       mov eax,dword ptr ss:[esp+0x24]
5DF22CE8    50              push eax
5DF22CE9    51              push ecx
5DF22CEA    52              push edx   ; ntdll_1.DbgUiRemoteBreakin
5DF22CEB    E8 109C6300     call iTunes_2.5E55C900 ;这个方法里面非常复杂,参数好像都是常量,不变,但里面好多jmp,根本不知道在干啥,但经它处理过后的第7个栈中的数据是给下面ecx赋值,非常关键
5DF22CF0    83C4 1C         add esp,0x1C  ;恢复栈,为下面ecx赋值
5DF22CF3    85C0            test eax,eax
5DF22CF5    75 28           jnz short iTunes_2.5DF22D1F  ;不跳转
5DF22CF7    68 D010BF5E     push iTunes_2.5EBF10D0   ; ASCII "kbsync"
5DF22CFC    FF15 9009AE5E   call dword ptr ds:[<&CoreFoundation.__CF> ; CoreFoun.__CFStringMakeConstantString  处理key
5DF22D02    8B4C24 04       mov ecx,dword ptr ss:[esp+0x4]  ;给ecx赋值,给下一个call传参数,值是乱码,根本不是那堆字符串,但也不排除是另外一种数据表现形式
5DF22D06    50              push eax
5DF22D07    8B4424 0C       mov eax,dword ptr ss:[esp+0xC]                        
5DF22D0B    E8 8037BDFF     call iTunes_2.5DAF6490   ;这个方法是将kbsync作为key,ecx作为value放入字典中,后面发送http之前调用C:\Program Files (x86)\Common Files\Apple\Apple Application Support\CoreFoundation.dll中的一个方法,这个方法将字典的数据按照key和value的对应方式转换成xml数据,然后发送给服务器。

上面的注释不知道我的理解有误吗,有误的话还请高手帮忙指正,之所以迷茫,主要是因为之前看雪有篇文章提到过这个算法:http://bbs.pediy.com/showthread.php?t=150224
但fosom的解答非常粗略,我按照他提供的线索,比如根据CFStringGetFastestEncoding,memset下的断点,甚至连内存断点我也尝试好多次,最终都以失败告终,找不到真正算法的逻辑,也没法用IDA仔细的分析了。

我知道破解这个东西不是一天两天就搞得定的,但我已经搞了一个月了,心里很着急,可能是小弟走进了死胡同,还请各位高手给小弟指条明路,帮忙用OD看看这算法

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 576
活跃值: (1163)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
晕,ITUNES下载参数kbsync。。这个东西我最终是以调用itunes.dll实现。。itunes内部的那些jmp应该是苹果公司的一种加密保护手段。。 那个东西是阻碍分析的关键。。

大概原理就是:  首先需要生成两个6字节的机器相关的信息,然后加上你的苹果账号ID,传递一个函数里面会生成一个DWORD,后面又会用该DWORD作为参数调用另外一个函数,生成一些东西。。最后是BASE64加密。。

搞itunes这个东西很吐血的,功力不够深厚,过不了itunes的那个代码加密手段的话,很难搞。。
2012-10-12 16:55
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我花了不少时间学习了OD,很多功能知道却没去如何实现。
2012-10-15 09:07
0
雪    币: 98
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
CoreFoundation.dll是好东西啊,千万不要搞就对了
2012-10-15 10:24
0
雪    币: 98
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
还有CoreFP.dll
2012-10-15 10:30
0
雪    币: 47
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
不要搞是什么意思?
2012-10-15 14:20
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
调用itunes.dll实现了?
2013-2-6 15:23
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
只要调用正确,一定就可以的。你如何调用的?
2013-2-7 15:44
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
CoreFP.dll 不要搞她,只需被她搞    是对的。
但CoreFoundation.dll 绝对是能搞 而且需要搞的东西。
2013-2-9 10:37
0
雪    币: 194
活跃值: (25)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
14
上来就找个最硬的骨头啃啊。要做itunes刷榜的?
2013-2-15 00:51
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
只要调用正确,一定就可以的?
2013-2-18 16:59
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
只要调用正确,一定就可以的。
2013-2-18 18:13
0
雪    币: 272
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
就是做刷榜的,鉴定完毕
苹果有心的话,每台机器的ID都有记录的,服务器是会判断是不是真实的ID。
如果没有这个验证的话,那就可以刷了
2013-2-18 19:17
0
游客
登录 | 注册 方可回帖
返回
//