UPDATE:
In this release there are two versions. One is the old MEF from before (working with 3.1.2)the other is a new MEF that I made with Cocoa. As I a not confident with compatibility I have included both.
Instructions for new
1. Run the Model Edit Fix.
2. It will ask for administrator.
3. WoW will start up, you should get a message box saying success.
4. Close the Model Edit Fix.
Instructions for Old
1. Run the Model Edit Fix.
2. It will ask for administrator.
3. Run World of Warcraft
4. Close the Model Edit Fix.
Download: Model_Edit_Fix.zip
Originally Posted by
treeantz
Hey. Thanks alot for the fix. I cant get it to work though.
Im on a;
Intel Core 2 duo
Mac OS X 10.4.11
Wow 3.1.1
and I get a
Bus error
logout
Thanks in advance.

From my Googling i can tell you that its something to do with Mac OS X v10.4.11. I will try find a fix.
Originally Posted by
tripleblade3
jjaa I was wondering If I could use your program in another program that I am making (I will include credits to you of course for the MEFIX part). I wanted to post here and ask you first before I just used it without your permission, furthermore, If it is possible could I see a copy of the source? I'm quite interested in model editing and memory editing on OS X but I'm not sure where to start. I have sufficient knowledge of Cocoa and some C++ but if you have any tips/pointers I would greatly appreciate it.
Cheers,
Tripleblade3
You're welcome to use the same method as me in your program. Although without some reverse engineering experience you will most likely have trouble updating it across patches.
I will give you a quick run down of how i made the MEF. First I found the function that that Kynox uses but in the Mac binary. To do this I just look for something unique that would be in both the Mac and PC version of WoW eg. Strings and Function parameters. With a quick analysis of the function (at 0x4E14) it was obvious that the function was exiting WoW and dumping an error log. Seeming that this function did nothing else I decided to patch the first byte of the function to 0xC3.
0xC3 in x86 assembly is retn. The retn prevents the function from being executed and crashing WoW.
In order to patch WoW what you need to do first is obtain procmod/root (look at pocketgnome if you’re unsure how to do this). Next get the pid for WoW (again documented so no need to explain)..
Code:
mach_port_t wowTask;
int pid = GetPIDForProcessName("World of Warcraft");
// Now that you have the pid call task_for_pid
task_for_pid(current_task(), pid , &wowTask)
vm_address_t addr = (vm_address_t)0x00004E14; // Our address
vm_protect(wowTask, addr, vm_page_size, FALSE, VM_PROT_WRITE | VM_PROT_READ); // so we can write to the address
Byte buffer[] = { 0xC3 }; // The byte we want to write
vm_write(wowTask, addr, (vm_offset_t)&buffer, (mach_msg_type_number_t)1 ) //write to the address