Jump to content

How to return a value to a function with parameters?


PixelYT

9 posts in this topic

Recommended Posts

Posted

Let's say I have this function in the dump.cs:

protected void ammo(int value, bool reload); // 0x289235

and I hooked it like this:

void(*old_ammo)(void *instance, int value, bool reload);
void ammo(void *instance, int value, bool reload)
{
if(instance != NULL)
{
// do something
}
return old_ammo(instance, value, reload);
}
MsHookFunction((void*)getAbsoluteAddress(0x289235), (void*)ammo, (void**)&old_ammo);

How would I set values to the parameters?

Would I do it like this:

void(*old_ammo)(void *instance, int value, bool reload);
void ammo(void *instance, int value, bool reload)
{
if(instance != NULL)
{
  return ammo(instance, 9999, false);
}
return old_ammo(instance, value, reload);
}
MsHookFunction((void*)getAbsoluteAddress(0x289235), (void*)ammo, (void**)&old_ammo);

or like this?

void(*old_ammo)(void *instance, int value, bool reload);
void ammo(void *instance, int value, bool reload)
{
if(instance != NULL)
{
  return 9999, false;
}
return old_ammo(instance, value, reload);
}
MsHookFunction((void*)getAbsoluteAddress(0x289235), (void*)ammo, (void**)&old_ammo);

Which one is correct?

 If none are correct, then how would I do it?

Posted
On 5/14/2021 at 11:09 PM, PixelYT said:

Would I do it like this:


void(*old_ammo)(void *instance, int value, bool reload);
void ammo(void *instance, int value, bool reload)
{
if(instance != NULL)
{
  return ammo(instance, 9999, false);
}
return old_ammo(instance, value, reload);
}
MsHookFunction((void*)getAbsoluteAddress(0x289235), (void*)ammo, (void**)&old_ammo);

This one is the one you need for setting the parameters.

Posted
2 minutes ago, PixelYT said:

Thanks sir! :))

Sorry, I just spotted a mistake. You should return old_ammo(instance, 9999,false); 

 

Not ammo(instance, 9999, false);

Posted
1 minute ago, Ted2 said:

Sorry, I just spotted a mistake. You should return old_ammo(instance, 9999,false); 

 

Not ammo(instance, 9999, false);

so we when we are setting values to parameters, we use the old_ammo but when there is no parameters we just use the ammo and inside of it return 99999 or whatever we want, right?

Posted

Hmm, sorry. I was checking the post on phone which sucks. I just checked on my laptop and...

 

The method you're hooking is a void, which means it doesn't return anything. Void methods are called to perform certain things rather than returning something. So this ammo method has two parameters: ammo and reload. You can make them always 9999 and false, but you do not return them.

A valid hook would look like this:

// This holds the original state of the method, some people prefer to call it "orig_ammo" instead because of that.
void(*old_ammo)(void *instance, int value, bool reload);

// This is the hooked method, where you can do whatever you want
void ammo(void *instance, int value, bool reload) {
  	// Just a note; I don't think instance will ever be NULL.
	if(instance != NULL) {
		// set ammo to 9999 and reload to false
		old_ammo(instance, 9999, false);
	}
	// Do what it normally does
	old_ammo(instance, value, reload);
}


MsHookFunction((void*)getAbsoluteAddress(0x289235), (void*)ammo, (void**)&old_ammo);

 

I've added some comments to the code, so I hope you understand better then.

Posted
3 hours ago, Ted2 said:

Hmm, sorry. I was checking the post on phone which sucks. I just checked on my laptop and...

 

The method you're hooking is a void, which means it doesn't return anything. Void methods are called to perform certain things rather than returning something. So this ammo method has two parameters: ammo and reload. You can make them always 9999 and false, but you do not return them.

A valid hook would look like this:


// This holds the original state of the method, some people prefer to call it "orig_ammo" instead because of that.
void(*old_ammo)(void *instance, int value, bool reload);

// This is the hooked method, where you can do whatever you want
void ammo(void *instance, int value, bool reload) {
  	// Just a note; I don't think instance will ever be NULL.
	if(instance != NULL) {
		// set ammo to 9999 and reload to false
		old_ammo(instance, 9999, false);
	}
	// Do what it normally does
	old_ammo(instance, value, reload);
}


MsHookFunction((void*)getAbsoluteAddress(0x289235), (void*)ammo, (void**)&old_ammo);

 

I've added some comments to the code, so I hope you understand better then.

oh wow, now i understand. It's just like how when we hook an Update method and use function pointers on it, we don't use return because the Update method is a void which means it doesn't return anything. Thank you, now I understand, i just didn't know that when we hook a method that is a void but not the Update method, we just call the function and set it's parameters without return.

Posted
3 hours ago, Ted2 said:

Hmm, sorry. I was checking the post on phone which sucks. I just checked on my laptop and...

 

The method you're hooking is a void, which means it doesn't return anything. Void methods are called to perform certain things rather than returning something. So this ammo method has two parameters: ammo and reload. You can make them always 9999 and false, but you do not return them.

A valid hook would look like this:


// This holds the original state of the method, some people prefer to call it "orig_ammo" instead because of that.
void(*old_ammo)(void *instance, int value, bool reload);

// This is the hooked method, where you can do whatever you want
void ammo(void *instance, int value, bool reload) {
  	// Just a note; I don't think instance will ever be NULL.
	if(instance != NULL) {
		// set ammo to 9999 and reload to false
		old_ammo(instance, 9999, false);
	}
	// Do what it normally does
	old_ammo(instance, value, reload);
}


MsHookFunction((void*)getAbsoluteAddress(0x289235), (void*)ammo, (void**)&old_ammo);

 

I've added some comments to the code, so I hope you understand better then.

One more question: inside of the if(instance != NULL) statement, don't we use ammo to set parameters to whatever we like and then after it, we just put the old_ammo in case instance is NULL? Like this and not like the above one:

void(*old_ammo)(void *instance, int value, bool reload); // this holds the original value of the method
void ammo(void *instance, int value, bool reload) // this is the hooked method where we change the value to whatever we like
{
if(instance != NULL)
{
  ammo(instance, 9999, false); // Use the hooked method to change int value to 9999, and bool reload to false
}
 old_ammo(instance, value, reload); // in case instance is NULL, call the old_ammo which holds the original value
}
MsHookFunction((void*)getAbsoluteAddress(0x289235), (void*)ammo, (void**)&old_ammo);

 

Posted
7 hours ago, PixelYT said:

One more question: inside of the if(instance != NULL) statement, don't we use ammo to set parameters to whatever we like and then after it, we just put the old_ammo in case instance is NULL? Like this and not like the above one:


void(*old_ammo)(void *instance, int value, bool reload); // this holds the original value of the method
void ammo(void *instance, int value, bool reload) // this is the hooked method where we change the value to whatever we like
{
if(instance != NULL)
{
  ammo(instance, 9999, false); // Use the hooked method to change int value to 9999, and bool reload to false
}
 old_ammo(instance, value, reload); // in case instance is NULL, call the old_ammo which holds the original value
}
MsHookFunction((void*)getAbsoluteAddress(0x289235), (void*)ammo, (void**)&old_ammo);

 

Nope. As the void ammo(bla, bla, bla) {} is the replacement method of the original method (which you named old_ammo), here you write your own logic of the method. If you only need to change the parameter values, you can just call the original method (old_ammo) with your own values and that will be enough. You could also do: 

void ammo(void *instance, int value, bool reload) {
	value = 9999;
	reload = false;
	old_ammo(instance, value, reload);
}

In this example you alter the parameter values it was originally called with and then call the method itself with your new values.

Archived

This topic is now archived and is closed to further replies.

  • Our picks

    • Olympush v0.0.12 [ +5 Cheats ] Currency Max
      Modded/Hacked App: Olympush By Arcane Blast s.r.o.
      Bundle ID: com.ArcaneBlast.Olympush
      App Store Link: https://apps.apple.com/us/app/olympush/id6762312452?uo=4

      🤩 Hack Features

      - Unlimited Gold
      - Enough Parts / Upgrade Hero
      - Mana Freeze
      - Unlimited Trop Deploy / iGG Auto Touch Use / Always Win
      - AI Freeze
      • 0 replies
    • Olympush v0.0.12 [ +5 Jailed ] Currency Max
      Modded/Hacked App: Olympush By Arcane Blast s.r.o.
      Bundle ID: com.ArcaneBlast.Olympush
      App Store Link: https://apps.apple.com/us/app/olympush/id6762312452?uo=4

      🤩 Hack Features

      - Unlimited Gold
      - Enough Parts / Upgrade Hero
      - Mana Freeze
      - Unlimited Trop Deploy / iGG Auto Touch Use / Always Win
      - AI Freeze
      • 1 reply
    • North War: Island Defense 3D v1.2.2 [ +3 APK MOD ] Currency Max
      Mod APK Game Name: North War: Island Defense 3D
      Rooted Device: Not Required.
      Google Play Store Link: https://play.google.com/store/apps/details?id=com.bgg.island.battle&hl=en

       

      🤩 Hack Features

      - ADS NO / Rewards Free
      - Unlimited Currency
      - Unlimited Resources

       

      ⬇️ Android Mod APK Download Link


      Hidden Content

      iOSGods App for Android







       

      📖 Android Installation Instructions

      STEP 1: Download the modded APK file from the link above using your preferred Android browser or download manager.
      STEP 2: Once the download is complete, open your file manager and locate the downloaded .apk file (usually in the Downloads folder).
      STEP 3: Tap the APK file, then select Install. If prompted, enable Install from Unknown Sources in your device settings.
      STEP 3A: If the mod includes an OBB file, extract it if it’s inside an archive. Then move the folder to: /Android/obb/
      STEP 3B: If the mod includes a DATA file, extract it if it’s archived. Then move the folder to: /Android/data/
      STEP 4: Once installed, open the game and toggle your desired cheats & features through the APK mod menu. Enjoy!

       

      NOTE: If you have any questions or issues, read our Frequently Asked Questions topic. If you still need help, post your issue below and we’ll assist you as soon as possible. If the mod works for you, please share your feedback to help other members!

       

      🙌 Credits

      - IK_IK

       

      📷 Cheat Video/Screenshots

      N/A

       

       iOS & iPadOS App Hacks
      If you’re looking for Non-Jailbroken & No Jailbreak required iOS IPA hacks, visit the iOS Game Cheats & Hacks or the iOSGods App for a variety of modded games and apps for non-jailbroken iOS devices.
      • 1 reply
    • MechanicWar:Idle RPG v1.0.1 [ +19 APK MOD ] Currency Max
      Mod APK Game Name: MechanicWar:Idle RPG
      Rooted Device: Not Required.
      Google Play Store Link: https://play.google.com/store/apps/details?id=com.rawhand.mechanicwar&hl=en

      🤩 Hack Features

      - Unlimited Diamond +4
      - Unlimited Silver Stone +2
      - Unlimited Medi Kit
      - Unlimited Inventory Size
      - Auto Skip Wave
      - Energy Freeze
      - Drop Rocket Inf / Linked Energy / Use iGG Auto Touch
      - HP Regen / Linked Energy / Use iGG Auto Touch
      - Faster LvL UP / Need 1 EXP / Easy To Get Rewards / Diamond Stone Gems
      - Daily Quest / Claim All
      - Weekly Quest / Claim All
      - Achievement / Claim All
      - Chapter Unlocked / Show Locked But Works
      - Stage Unlocked / Show Locked But Works
      - Planet Unlocked / Show Locked But Works

      Note:- Don't Abuse The Hack Incase Banned / Don't Buy ViP For This
      • 2 replies
    • Zombie Blast - Link Match v3.4.23 [ +3 APK MOD ] Auto Win
      Mod APK Game Name: Zombie Blast - Link Match
      Rooted Device: Not Required.
      Google Play Store Link: https://play.google.com/store/apps/details?id=com.sngict.survivors.zombies&ref=apkcombo.com

      🤩 Hack Features

      - Auto Win
      - Hero HP Max
      - Hero ATK Max
      • 0 replies
    • Last Survivor: Fantasy Land v1.0.399 [ +8 APK MOD ] Currency Max
      Mod APK Game Name: Last Survivor: Fantasy Land
      Rooted Device: Not Required.
      Google Play Store Link: https://play.google.com/store/apps/details?id=com.fansipan.survivor.roguelike.casual.game&hl=en

       

      🤩 Hack Features

      - ADS NO [ Rewards Free ]
      - Heroes Unlocked
      - Hero Pass
      - Legends Pass
      - Growth Found +4
      - HP
      - DMG
      - Always Last Wave

       

      ⬇️ Android Mod APK Download Link


      Hidden Content

      iOSGods App for Android







       

      📖 Android Installation Instructions

      STEP 1: Download the modded APK file from the link above using your preferred Android browser or download manager.
      STEP 2: Once the download is complete, open your file manager and locate the downloaded .apk file (usually in the Downloads folder).
      STEP 3: Tap the APK file, then select Install. If prompted, enable Install from Unknown Sources in your device settings.
      STEP 3A: If the mod includes an OBB file, extract it if it’s inside an archive. Then move the folder to: /Android/obb/
      STEP 3B: If the mod includes a DATA file, extract it if it’s archived. Then move the folder to: /Android/data/
      STEP 4: Once installed, open the game and toggle your desired cheats & features through the APK mod menu. Enjoy!

       

      NOTE: If you have any questions or issues, read our Frequently Asked Questions topic. If you still need help, post your issue below and we’ll assist you as soon as possible. If the mod works for you, please share your feedback to help other members!

       

      🙌 Credits

      - IK_IK

       

      📷 Cheat Video/Screenshots

      N/A

       

       iOS & iPadOS App Hacks
      If you’re looking for Non-Jailbroken & No Jailbreak required iOS IPA hacks, visit the iOS Game Cheats & Hacks or the iOSGods App for a variety of modded games and apps for non-jailbroken iOS devices
      • 0 replies
    • Portal Survivor v2.4.1 [ +15  APK MOD ] Currency Max
      Mod APK Game Name: Portal Survivor
      Rooted Device: Not Required.
      Google Play Store Link: https://play.google.com/store/apps/details?id=com.escape.portalsurvivor&hl=en

      🤩 Hack Features

      - Energy / No Need To Play
      - Coins Freeze
      - Silver Keys Freeze
      - Golden Keys Freeze
      - SGrade Box Freeze x1
      - Revival Coins Freeze
      - Scroll Freeze / Easy Upgrade Equipment
      - Equip Coins Freeze / Easy Upgrade Equipment
      ::::::::: VIP ::::::::
      - Month Card Active
      - ADS NO / Rewards Free
      - Unlimited Instant Collect
      - Unlimited Gems / Not Tested
      - Unlimited Energy
      - Portal Rewards / Unlimited Coins
      - Portal Rewards / Unlimited EXP / Faster Level UP
      • 1 reply
    • Zombie Race Survivor v0.1.270 [ +6 Cheats ] Currency Max
      Modded/Hacked App: Zombie Race SurvivorBy UGI Studio Cyprus LTD
      Bundle ID: com.ugi.zombierace.survival
      App Store Link: https://apps.apple.com/ph/app/zombie-race-survivor/id6749445516?uo=4

      🤩 Hack Features

      - Unlimited Gems / Use & Earn
      - Unlimited Coins / Use & Earn
      - Unlimited Energy / Use & Earn
      - Unlimited EXP LVL / Battle Rewards
      - Unlimited BluePrint / Battle Rewards
      - Unlimited Battle Rewards / Gems Coins 
      • 3 replies
    • Zombie Race Survivor v0.1.270 [ +6 Jailed ] Currency Max
      Modded/Hacked App: Zombie Race SurvivorBy UGI Studio Cyprus LTD
      Bundle ID: com.ugi.zombierace.survival
      App Store Link: https://apps.apple.com/ph/app/zombie-race-survivor/id6749445516?uo=4 

      🤩 Hack Features

      - Unlimited Gems / Use & Earn
      - Unlimited Coins / Use & Earn
      - Unlimited Energy / Use & Earn
      - Unlimited EXP LVL / Battle Rewards
      - Unlimited BluePrint / Battle Rewards
      - Unlimited Battle Rewards / Gems Coins
      • 3 replies
    • Candy Crush Solitaire +11 Jailed Cheats [ Game Breaking ]
      Modded/Hacked App: Candy Crush Solitaire By King.com Limited
      Bundle ID: com.midasplayer.apps.candysolitaire
      App Store Link: https://apps.apple.com/us/app/candy-crush-solitaire/id6474685626?uo=4

       
       

      🤩 Hack Features

      - Unlimited Free Gifts -> Head into the Shop to claim the free gift over & over.
      - Season Pass Purchased

      VIP
      - Add Coins*
      - Add Energy*
      - Add Colour Bomb Boosters*
      - Add UFO Boosters*
      - Add Wildcards*
      - Add Undo's*
      - Add Extra Moves*
      - Add Free Entries*
      - Add Lollipops*

      * Head into Settings and toggle the ? button. Only enable 1 feature at a time.
      • 49 replies
    • Gang Battle Party: Playground +4 Jailed Cheats [ Unlimited Currencies ]
      Modded/Hacked App: Gang Battle Party: Animals 3D By LLP Take Top Entertainment
      Bundle ID: com.taketopios.chillybash
      iTunes Store Link: https://apps.apple.com/us/app/gang-battle-party-animals-3d/id1664783935?uo=4

       


      🤩 Hack Features

      - Unlimited Currencies -> Will increase instead of decrease.
      - God Mode
      - One-Hit Kill
      -- No Ads
      • 8 replies
    • Cooking Wonder: Cooking Games +1++ Jailed Cheat [ Unlimited Currencies ]
      Modded/Hacked App: Cooking Wonder By WonderLegend Games
      Bundle ID: com.wonderlegend.cookingwonder
      iTunes Store Link: https://apps.apple.com/us/app/cooking-wonder/id1638005392
       

      Hack Features:
      - Unlimited Currencies -> Use some.


      Jailbreak required hack(s): https://iosgods.com/topic/169330-cooking-wonder-v120-1-cheat-unlimited-currencies/
      Modded Android APK(s): https://iosgods.com/forum/68-android-section/
      For more fun, check out the Club(s): https://iosgods.com/clubs/
        • Informative
      • 53 replies
×
  • 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