Also, I added the next upcoming mod to the OP. That is the first TRUE mod for MCPE, ever. Right now, I have the sprinting working except for the activation via double tap. This should only take a few days, so expect a release within a week. Yes, I did just give an ETA. I'm sure I'll regret that later.
WRONG!!!!!!!!! INCORRECT!!!!!!!!! What about the auto mine mod, he added new code to the game so. WRONG! (I'll prob regret this maybe)
WRONG!!!!!!!!! INCORRECT!!!!!!!!! What about the auto mine mod, he added new code to the game so. WRONG! (I'll prob regret this maybe)
The auto-mine mod is not a true MCPE mod. That does not change MCPE actually. It simply changes the way that the app receives touch events. With only a slight modification, that mod could work on any iOS app at all.
The sprint mod IS a true mod, because I actually change some of the code in MCPE itself. Notably, I change the function that makes Steve move to instead run if a certain condition, the double tap and hold gesture, is met. This is the first true, albeit simple, MCPE mod.
Intyre doesn't need someone to continue work on iMCPEdit, it's being discontinued and replaced with...iMCPE. The vid is just a quick unveil of what will be new, but there are many more un-seeable features in iMCPE than the menu shows
Intyre doesn't need someone to continue work on iMCPEdit, it's being discontinued and replaced with...iMCPE. The vid is just a quick unveil of what will be new, but there are many more un-seeable features in iMCPE than the menu shows
Your like the guy who comes out of no where to tell people whats going on when something is confusing.
The auto-mine mod is not a true MCPE mod. That does not change MCPE actually. It simply changes the way that the app receives touch events. With only a slight modification, that mod could work on any iOS app at all.
The sprint mod IS a true mod, because I actually change some of the code in MCPE itself. Notably, I change the function that makes Steve move to instead run if a certain condition, the double tap and hold gesture, is met. This is the first true, albeit simple, MCPE mod.
This modding method is the method that actually has bugs and takes longer to make unlike other mods that are simple.
It only has bugs while testing. I will fix them before the release.
Also, I'm sorry that this is taking so long. If I wasn't grounded it would have been done by now, as I haven't had a single second to work on this for the past three days.
And thanks Intyre for hijacking my thread. Really nice of you
Those mods that he showed are buttons that, when pressed, literally patch and unpatch the app.. from within the app. The sprint mod does not do this, and therefore is less buggy.
Okay, finally ungrounded. I have been working on this a lot tonight and have made a lot of progress. There will be a released sprinting mod soon. Please be patient as I have a job and school to go to.
I don't believe Android has the same hooking functions as iOS, but I could be mistaken... We also don't own Android devices, so it's not like we could test them really. 500ISE said he might be able to do it, but if he can't then it won't be ported for now.
Rollback Post to RevisionRollBack
Did you know I make music? Just click my logo to listen to my awesome Electronic beats!
I don't believe Android has the same hooking functions as iOS, but I could be mistaken... We also don't own Android devices, so it's not like we could test them really. 500ISE said he might be able to do it, but if he can't then it won't be ported for now.
What do you mean by hooking function? I wonder how did you got MCPE to change or call external code? Do you mind telling?
Hey I got a mod idea, I do not know if you would actually do it, but I want a mode that would allow us to talk on a server? That would be great. By the way, nice mods.
I don't believe Android has the same hooking functions as iOS, but I could be mistaken... We also don't own Android devices, so it's not like we could test them really. 500ISE said he might be able to do it, but if he can't then it won't be ported for now.
It's not really feasible on Android to hook functions due to almost no developers using Objective-C on Android and C++ not having some sort of built-in mechanisms (AFAIK). 500 ISE, however has found ways to edit the loaded dynamic library in-memory to overwrite instructions during runtime. It isn't very helpful as this doesnt allow vtable access. MCPELauncher is capable of a lot of new ways to mod though.
EDIT: Also, just thought of something, MCPELauncher could theoretically load a lib with custom code into memory then inject a jump instruction into the MCPE code so that when something happens, MCPE jumps to the location of our custom code then returns back to regular execution. We'd have to destroy a few bytes of MCPE data for this to work but that could be re-implemented anyways if this does indeed work. tried with loading custom libs... failure.
What do you mean by hooking function? I wonder how did you got MCPE to change or call external code? Do you mind telling?
Objective-C code is very dynamic. The classes are so dynamic that a method could be added to a class at runtime, by any program, using the low-level objc library that all Objective-C code must be linked against. This allows another program to intercept or "hook" a specific function call. Hooking a function allows developers to program their own code into someone else's program without the source code.
These mods use MobileSubstrate (basically a nifty wrapper/loader for the low-level objc library) to hook the Objective-C functions of MCPE. The mcpe code could then be changed by sifting through the in-memory binary.
It's not really feasible on Android to hook functions due to almost no developers using Objective-C on Android and C++ not having some sort of built-in mechanisms (AFAIK). 500 ISE, however has found ways to edit the loaded dynamic library in-memory to overwrite instructions during runtime. It isn't very helpful as this doesnt allow vtable access. MCPELauncher is capable of a lot of new ways to mod though.
EDIT: Also, just thought of something, MCPELauncher could theoretically load a lib with custom code into memory then inject a jump instruction into the MCPE code so that when something happens, MCPE jumps to the location of our custom code then returns back to regular execution. We'd have to destroy a few bytes of MCPE data for this to work but that could be re-implemented anyways if this does indeed work.
Objective-C code is very dynamic. The classes are so dynamic that a method could be added to a class at runtime, by any program, using the low-level objc library that all Objective-C code must be linked against. This allows another program to intercept or "hook" a specific function call. Hooking a function allows developers to program their own code into someone else's program without the source code.
These mods use MobileSubstrate (basically a nifty wrapper/loader for the low-level objc library) to hook the Objective-C functions of MCPE. The mcpe code could then be changed by sifting through the in-memory binary.
Mobile Substrate has two main components: an Objectibe-C hooking API and a C/C++ hooking API. Internally, Mobile Substrate overwrites some instructions (3, i think) in the prologue of the function being hooked. These instructions cause the function to be redirected to a trampoline from which it jumps to the custom hooked implementation of the function. After the hooked implementation returns, it jumps back to where the original function was called from. When you originally setup the hook, you receive a function pointer to the original function. This pointer is actually a pointer to a function synthesized by Mobile Substrate that first performs the actions that the overwritten instructions would have done, then it jumps to the original code right after the overwritten instructions.
If MCPE were written in Objective-C, our jobs as modders would be MUCH simpler. Unfortunately, only a few required parts of the app are written in Objective-C. The game itself is pure C++. And, to make things worse, on iOS, MCPE is stripped, meaning we can't use function names while hooking. Instead, we have to search for the function's address using IDA. Theres also another issue to worry about: ASLR. ASLR means that function addresses are different each time the app loads. Therefore, even once we find the address of the function to hook, we also need to compensate for ASLR by determining where in memory the function actually is.
The auto-mine mod is not a true MCPE mod. That does not change MCPE actually. It simply changes the way that the app receives touch events. With only a slight modification, that mod could work on any iOS app at all.
The sprint mod IS a true mod, because I actually change some of the code in MCPE itself. Notably, I change the function that makes Steve move to instead run if a certain condition, the double tap and hold gesture, is met. This is the first true, albeit simple, MCPE mod.
Check out my iOS Mods!
http://youtu.be/UuZ5Ukyj2V0
Of course he's alive!
Intyre doesn't need someone to continue work on iMCPEdit, it's being discontinued and replaced with...iMCPE. The vid is just a quick unveil of what will be new, but there are many more un-seeable features in iMCPE than the menu shows
Your like the guy who comes out of no where to tell people whats going on when something is confusing.
This modding method is the method that actually has bugs and takes longer to make unlike other mods that are simple.
It only has bugs while testing. I will fix them before the release.
Also, I'm sorry that this is taking so long. If I wasn't grounded it would have been done by now, as I haven't had a single second to work on this for the past three days.
And thanks Intyre for hijacking my thread. Really nice of you
Those mods that he showed are buttons that, when pressed, literally patch and unpatch the app.. from within the app. The sprint mod does not do this, and therefore is less buggy.
Check out my iOS Mods!
Check out my iOS Mods!
I don't believe Android has the same hooking functions as iOS, but I could be mistaken... We also don't own Android devices, so it's not like we could test them really. 500ISE said he might be able to do it, but if he can't then it won't be ported for now.
(Whispers "I'm not actually dead, I'm just in hiding and watching you all...)
What do you mean by hooking function? I wonder how did you got MCPE to change or call external code? Do you mind telling?
It's not really feasible on Android to hook functions due to almost no developers using Objective-C on Android and C++ not having some sort of built-in mechanisms (AFAIK). 500 ISE, however has found ways to edit the loaded dynamic library in-memory to overwrite instructions during runtime. It isn't very helpful as this doesnt allow vtable access. MCPELauncher is capable of a lot of new ways to mod though.
EDIT: Also, just thought of something, MCPELauncher could theoretically load a lib with custom code into memory then inject a jump instruction into the MCPE code so that when something happens, MCPE jumps to the location of our custom code then returns back to regular execution. We'd have to destroy a few bytes of MCPE data for this to work but that could be re-implemented anyways if this does indeed work.tried with loading custom libs... failure.Objective-C code is very dynamic. The classes are so dynamic that a method could be added to a class at runtime, by any program, using the low-level objc library that all Objective-C code must be linked against. This allows another program to intercept or "hook" a specific function call. Hooking a function allows developers to program their own code into someone else's program without the source code.
These mods use MobileSubstrate (basically a nifty wrapper/loader for the low-level objc library) to hook the Objective-C functions of MCPE. The mcpe code could then be changed by sifting through the in-memory binary.
never mind. I figured it out. You should do a mod that increases the render distance without having to decrypt mcpe.
Thanks!
Mobile Substrate has two main components: an Objectibe-C hooking API and a C/C++ hooking API. Internally, Mobile Substrate overwrites some instructions (3, i think) in the prologue of the function being hooked. These instructions cause the function to be redirected to a trampoline from which it jumps to the custom hooked implementation of the function. After the hooked implementation returns, it jumps back to where the original function was called from. When you originally setup the hook, you receive a function pointer to the original function. This pointer is actually a pointer to a function synthesized by Mobile Substrate that first performs the actions that the overwritten instructions would have done, then it jumps to the original code right after the overwritten instructions.
If MCPE were written in Objective-C, our jobs as modders would be MUCH simpler. Unfortunately, only a few required parts of the app are written in Objective-C. The game itself is pure C++. And, to make things worse, on iOS, MCPE is stripped, meaning we can't use function names while hooking. Instead, we have to search for the function's address using IDA. Theres also another issue to worry about: ASLR. ASLR means that function addresses are different each time the app loads. Therefore, even once we find the address of the function to hook, we also need to compensate for ASLR by determining where in memory the function actually is.
Check out my iOS Mods!