Where can i download one. I would like to look at it and see how it works. I am wanting to use for educational purposes to learn how to make my own unlocker.
Where can i download one. I would like to look at it and see how it works. I am wanting to use for educational purposes to learn how to make my own unlocker.
GitHub - fail46/World-of-Warcraft-Lua-Unlocker: A hack to unlock all of World of Warcraft's Lua functions. Supports WoW 4.0.6a and later.
update some of the hooks, and it's a starting point
Need a guild in the US? Visit murlocs.com
#!/bin/bash
#
# LUA Unlocker for Mac OS X implemented in Shell script w/AppleScript dialogs.
#
# Macattack on PossiblyEngine forums
# Modified for 3.3.5a by Thefrese on Ownedcore
# Configuration / Offsets and patch values
# For build 3.3.5a Mac 32 bit client
LUAOFFSET=0x50dd63
VALID=0x74
PATCHED=0xeb
# This is cosmetic only, nice to keep it up to date though
BUILDSTRING=�"3.3.5a 32bit WoW"
# Window title
TITLE="LUA Unlock"
# Tempdir, use system tmpdir environment
TEMPFOLDER=$TMPDIR
# Wait how long for lldb to finish, 5 - 7 seconds
WAITSEC=5
LLDB=/usr/bin/lldb
# This is set to 0 if not running, 1 if running
ISWOWRUNNING=`ps -ef | grep "World\ of\ Warcraft.app" | wc -l | awk '{print $1}'`
function cleanupTmp {
# Cleanup temp files
rm -f $TEMPFOLDER/luacheck.lldb $TEMPFOLDER/luapatch.lldb $TEMPFOLDER/luavalue.mem
}
# Check LLDB is installed
if [ ! -e /usr/bin/lldb ]
then
osascript -e "display dialog "LLDB is not installed. Try installing Xcode, then Xcode command line tools before trying this unlocker again" buttons "Close" with title "$TITLE""
exit
fi
if [ $ISWOWRUNNING -lt 1 ]
then
osascript -e "display dialog "World of Warcraft 64 bit is not running. Start WoW before attempting to patch LUA." buttons "Close" with title "$TITLE""
exit
fi
# Ask user if they want to continue
osascript -e "display dialog "LUA Unlocker for World of Warcraft $BUILDSTRING . Click ok to patch." with title "$TITLE""
if [ $? -gt 0 ]
then
# User clicked Cancel
exit
fi
# Setup two lldb scripts
# LLDB Script to read the memory value
cat << __EOF__ > $TEMPFOLDER/luacheck.lldb
process attach --name World\ of\ Warcraft
memory read --size 1 --format x --count 1 --outfile $TEMPFOLDER/luavalue.mem $LUAOFFSET
detach
quit
__EOF__
# LLDB Script to write the memory value
cat << __EOF__ > $TEMPFOLDER/luapatch.lldb
process attach --name World\ of\ Warcraft
memory write --size 1 $LUAOFFSET $PATCHED
detach
quit
__EOF__
# Run lldb to read the memory contents at the LUA offset, fork it into the BG
$LLDB --source $TEMPFOLDER/luacheck.lldb > /dev/null &
# LLDB is buggy so put it in the background and hope it does its thing in 7 seconds, then kill it
osascript -e "display dialog "Examing memory for LUA Lock Status" buttons "Wait $WAITSEC seconds" giving up after $WAITSEC" &
sleep $WAITSEC
killall -9 lldb
# Parse the lldb output for our desired pattern
WOWMEM=`cat $TEMPFOLDER/luavalue.mem | awk '{print $2}'`
# The memory should match the pre-patch value
if [ "$WOWMEM" != "$VALID" ]
then
osascript -e "display dialog "Read WoW offset $OFFSET but was unable to find the expected memory value $VALID. LUA may already be unlocked or you may not be using the correct WoW build/architecture. Use: $BUILDSTRING" with title "$TITLE""
cleanupTmp
exit
fi
# Run lldb to write the memory contents at the LUA offset, fork it into the BG
$LLDB --source $TEMPFOLDER/luapatch.lldb > /dev/null &
# LLDB is buggy so put it in the background and hope it does its thing in 7 seconds, then kill it
osascript -e "display dialog "Patching LUA Now" buttons "Wait $WAITSEC seconds" giving up after $WAITSEC" &
sleep $WAITSEC
killall -9 lldb
# Remove the file from the last time we checked the memory
rm -f $TEMPFOLDER/luavalue.mem
# Run lldb to read the memory contents at the LUA offset, fork it into the BG
$LLDB --source $TEMPFOLDER/luacheck.lldb > /dev/null &
# LLDB is buggy so put it in the background and hope it does its thing in 7 seconds, then kill it
osascript -e "display dialog "Checking LUA Patch success" buttons "Wait $WAITSEC seconds" giving up after $WAITSEC" &
sleep $WAITSEC
killall -9 lldb
# Parse the lldb output for our desired pattern
WOWMEM=`cat $TEMPFOLDER/luavalue.mem | awk '{print $2}'`
# The memory should match the pre-patch value
if [ "$WOWMEM" != "$PATCHED" ]
then
osascript -e "display dialog "Patch not successful. Sorry it didn't work out" with title "$TITLE""
cleanupTmp
exit
fi
cleanupTmp
osascript -e "display dialog "Patch successful!" with title "$TITLE""