Jump to content

Help with multiple arguments on MSHooking


Go to solution Solved by AnotherLurker,

33 posts in this topic

Recommended Posts

Posted (edited)

So what should I do if this types appear?

 

- (void)function1:(int) function2:(int) function3:(int)

 

 

image.jpg

 

 

Will post pictures later.

 

Also, what should I do if there are other types of arguments?

 

- (bool) function:(?)

 

Can I even edit the (?)?

Updated by RockCreeper
  • Replies 32
  • Created
  • Last Reply

Top Posters In This Topic

Popular Days

Posted

So what should I do if this types appear?

- (void)function1:(int) function2:(int) function3:(int)

Will post pictures later.

Also, what should I do if there are other types of arguments?

- (bool) function:(?)

Can I even edit the (?)?

about the ? function you can skip it no need to return it

and about the multiple function you can return every function alone but you need to write it like this

-(void)function:(int)arg1 function:(int)arg2 function:(int)arg3
and the return

return whatever;
arg1 = whatever;
arg2 = whatever;
arg3 = whatever;
%orig(arg1, arg2, arg3)
hope this help ^_^
Posted (edited)

about the ? function you can skip it no need to return it

and about the multiple function you can return every function alone but you need to write it like this

-(void)function:(int)arg1 function:(int)arg2 function:(int)arg3
and the return

return whatever;
arg1 = whatever;
arg2 = whatever;
arg3 = whatever;
%orig(arg1, arg2, arg3)
hope this help ^_^

You can't modify values after you've already returned and ended the execution of the method. Here is the proper solution:

%hook ClassName
- (void)function:(int)arg1 function:(int)arg2 function:(int)arg3 {
   %orig(arg1ModifiedValue, arg2ModifiedValue, arg3ModifiedValue);
}
%end

Make sure to replace the "arg#ModifiedValues" with the integer values you want. :)

Updated by Dwayne Johnson
Posted

about the ? function you can skip it no need to return it

and about the multiple function you can return every function alone but you need to write it like this

-(void)function:(int)arg1 function:(int)arg2 function:(int)arg3
and the return
return whatever;
arg1 = whatever;
arg2 = whatever;
arg3 = whatever;
%orig(arg1, arg2, arg3)
hope this help ^_^

Trying to make it into a patcher... So could u give more tips? Ty

Posted

Trying to make it into a patcher... So could u give more tips? Ty

here this from my tweak.xm from Fragger patcher

%hook Score

-(bool)allowedLevel:(int)arg1 World:(int)arg2 {
if(GetPrefBool(@"key2")) {
return TRUE;
arg1 = 0;
arg2 = 0;
%orig(arg1, arg2);
}
return %orig;
}

%end
Posted

You can't modify values after you've already returned and ended the execution of the method. Here is the proper solution:

 

%hook ClassName
- (void)function:(int)arg1 function:(int)arg2 function:(int)arg3 {
   %orig(arg1ModifiedValue, arg2ModifiedValue, arg3ModifiedValue);
}
%end
Make sure to replace the "arg#ModifiedValues" with the integer values you want. :)

So

 

%hook ClassName
- (void)function:(int)arg1 function:(int)arg2 function:(int)arg3 {
   %orig(arg199999999, arg299999999, arg39999999);
}
%end
?
Posted (edited)

Trying to make it into a patcher... So could u give more tips? Ty

Here you go:

#define plistPath @"/var/mobile/Library/Preferences/YourPlist.plist"

BOOL GetPrefBool(NSString *key) { return [[NSDictionary dictionaryWithContentsOfFile:plistPath];

%hook ClassName
- (void)function:(int)arg1 function:(int)arg2 function:(int)arg3 {
   if (GetPrefBool(@"")) {
       %orig(arg1ModifiedValue, arg2ModifiedValue, arg3ModifiedValue);
   } else {
       %orig(); //return original implementation since prefs are not enabled
   }
}
%end
Updated by Dwayne Johnson
Posted

here this from my tweak.xm from Fragger patcher

%hook Score

-(bool)allowedLevel:(int)arg1 World:(int)arg2 {
if(GetPrefBool(@"key2")) {
return TRUE;
arg1 = 0;
arg2 = 0;
%orig(arg1, arg2);
}
return %orig;
}

%end

Going to test that.

Damn, how fast do you guys type...

 

Cant keep up with replies.

Posted

So

 

%hook ClassName
- (void)function:(int)arg1 function:(int)arg2 function:(int)arg3 {
   %orig(arg199999999, arg299999999, arg39999999);
}
%end

It's actually:

 

%orig(99999999, 99999999, 9999999);

 

Make sure the number is not set to above 2,147,483,647 at which point numbers exceeding that value are turned negative, if you want to use that value in Hacking, use this:

 

%orig(INT_MAX, INT_MAX, INT_MAX);

 

Just make sure that the number hacked is permanent, and never exceeds that amount. :)

Posted

So

%hook ClassName
- (void)function:(int)arg1 function:(int)arg2 function:(int)arg3 {
   %orig(arg199999999, arg299999999, arg39999999);
}
%end
?
do what i said it's work for me

also you don't need to return all the functions like the pic you want to return argument 2 so write

arg2 = 9999;
%orig(arg2)
you can change the value :)

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
  • Create New...

Important Information

We would like to place cookies on your device to help make this website better. The website cannot give you the best user experience without cookies. You can accept or decline our cookies. You may also adjust your cookie settings. Privacy Policy - Guidelines