Farming Simulator 18 IAP CRACK

Step into the exciting world of farming with Farming Simulator 20! Harvest many different crops, tend to your livestock of pigs, cows, and sheep, and now ride your own horses, letting you explore the vast land around your farm in a brand-new way. Sell your products in a dynamic market to earn money which you can invest in additional machinery and the expansion of your farm.

In Farming Simulator 20 you take control of over 100 vehicles and tools faithfully recreated from leading brands in the industry. For the first time on mobile platforms this includes John Deere, the largest agriculture machinery company in the world. Drive other famous farming brands such as Case IH, New Holland, Challenger, Fendt, Massey Ferguson, Valtra, Krone, Deutz-Fahr and many more.

下载链接:

https://www.iphonecake.com/app_1478611992_.html


关键代码:

//  fs18iapDylib.m
//  fs18iapDylib
//
//  Created by obaby on 2017/8/24.
//  Copyright (c) 2017年 obaby. All rights reserved.
//

#import "fs18iapDylib.h"
#import "CaptainHook.h"
#import 
#import 
#import "CydiaSubstrate.h"
#import 
#import "BABYStringEncoding.h"

static __attribute__((constructor)) void entry(){
    NSLog(@"\n               🎉!!!congratulations!!!🎉\n👍----------------insert dylib success----------------👍");
    
    [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidFinishLaunchingNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) {
        
        CYListenServer(6666);
    }];
}

/*
CHDeclareClass(CustomViewController)

CHOptimizedMethod(0, self, NSString*, CustomViewController,getMyName){
    //get origin value
    NSString* originName = CHSuper(0, CustomViewController, getMyName);
    
    NSLog(@"origin name is:%@",originName);
    
    //get property
    NSString* password = CHIvar(self,_password,__strong NSString*);
    
    NSLog(@"password is %@",password);
    
    //change the value
    return @"AloneMonkey";
    
}
 */

CHDeclareClass(IOSInAppPurchase)

CHMethod2(void, IOSInAppPurchase, paymentQueue, id, que, updatedTransactions, id, trans){
    for(SKPaymentTransaction *tran in trans){
        NSLog(@"payment result:%ld",(long)tran.transactionState);
        
        
        switch (tran.transactionState) {
            case SKPaymentTransactionStatePurchased:
            {
                NSLog(@"payment result:交易完成");

            }
                break;
            case SKPaymentTransactionStatePurchasing: //
            {
                NSLog(@"payment result:商品添加进列表");
            }
                break;
            case SKPaymentTransactionStateRestored:
            {
                NSLog(@"payment result:已经购买过商品");

            }
                break;
            case SKPaymentTransactionStateFailed: //2
            {
                NSLog(@"payment result:交易失败");
                //SKPaymentTransaction * newTrans = [[SKPaymentTransaction alloc] init];
                //newTrans.transactionState = 1;
                
                //memset((uintptr_t)newTrans.transactionState, 0x1, 1);
                
                //memset(newTrans.transactionState, 0x1, 1);
                [tran setValue:[NSNumber numberWithInt:1] forKey:NSStringFromSelector(@selector(transactionState))];
                NSLog(@"payment result:buy changed");

                
                NSLog(@"payment2 result:%ld",(long)tran.transactionState);
            }
                break;
            default:
            {

            }
                break;
        }
    }
    CHSuper(2,IOSInAppPurchase, paymentQueue, que, updatedTransactions, trans);
}

NSInteger _logos_method$_ungrouped$SKPaymentTransaction$transactionState();
NSInteger _logos_method$_ungrouped$SKPaymentTransaction$transactionState()
{
    return 1LL;
}

NSInteger (*__logos_orig$_ungrouped$SKPaymentTransaction$transactionState)();


CHConstructor{
    //CHLoadLateClass(IOSInAppPurchase);
    //CHClassHook(0, CustomViewController, getMyName);
    //CHClassHook2(IOSInAppPurchase, paymentQueue, updatedTransactions);
    id hookedClass = objc_getClass("SKPaymentTransaction");
    if (hookedClass){
        MSHookMessageEx(hookedClass, @selector(transactionState), _logos_method$_ungrouped$SKPaymentTransaction$transactionState, &__logos_orig$_ungrouped$SKPaymentTransaction$transactionState);
        NSLog(@"congratulations!! hook success");
    }
    NSLog(@"congratulations!! hook finished");
}


github链接:

https://github.com/obaby/fs18-iap-crack

github链接:

https://github.com/obaby/fs18-iap-crack

原创文章,转载请注明: 转载自 obaby@mars

本文标题: 《Farming Simulator 18 IAP CRACK》

本文链接地址: https://h4ck.org.cn/2020/10/farming-simulator-20/

分享文章:

猜你喜欢:

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注