MobileSubstrate游戏黑客入侵iphone

时间:2013-08-28 21:45:07

标签: iphone hook theos cydia-substrate

我正在练习针对ipad的游戏王国时代(v2.0)的移动设备。

我只是想赚大钱,但我无处可去。播放器在类CCP中定义,有时也会检查服务器。

所以我试图在CCGameInformation类中找到数据的核心。函数 - (id)activePlayer很多是callet(比如每秒30次)所以我认为这是一个不错的起点。

CCPlayer(在包含文件中)被定义为

@interface CCPlayer : FZPlayer <NSCoding>
{
NSString *townName;
NSString *rawLastUpdateEnergyTime;
NSString *rawLastUpdateStaminaTime;
NSString *rawExpansionTimeStarted;
NSString *rawBankUpgradeTimeStarted;
...
int gold;
int level;
int attack;
...
@end

我在Tweaks.xm中将其声明为:

@interface CCPlayer:NSObject
{
NSString *townName;
NSString *rawLastUpdateEnergyTime;
NSString *rawLastUpdateStaminaTime;
NSString *rawExpansionTimeStarted;
NSString *rawBankUpgradeTimeStarted;
...
int gold;
int level;
int attack;
...
@end

我实际上包含了整个事情,只更改了基类。

CCGameInformation定义为:

@interface CCGameInformation : _ACFacebookAppIdKey
{
CCPlayer *user_;
CCLevel *userLevel_;
....
}

我在Tweaks.xm中将其定义为

@interface CCGameInformation : NSObject
{
CCPlayer *user_;
}
@end

我的钩子看起来像:

%hook CCGameInformation
- (id)activePlayer 
{
    CCPlayer* player = (CCPlayer*)%orig;
    MSHookIvar<int>(player, "energy") = 10;
    NSLog(@"Energy:%d\n",MSHookIvar<int>(player, "energy"));
    return player;
}

但它根本不起作用。它按照预期打印出“能量:10”,但游戏中的能量不会改变。

我是否正确使用了挂钩过程和减速,或者游戏是否比我预期的更受保护?

感谢。

1 个答案:

答案 0 :(得分:0)

游戏实际上可以将所有用户数据存储在服务器上。这在以应用内购买为特色的游戏中更为突出。不幸的是,在这种情况下几乎无法做到。如果您想测试它,请进一步考虑此方法,例如:

%hook CCPlayer

-(int)gold
{
    return 1000;     //amount of gold.
}
%end