Resource icon

Download mmBBQ - Lua API Injector Download 3.1.0_RC1 and 3.0.2

Login to enable download
Hexui Undetected CSGO Cheats Sinkicheat PUBG Cheat


Cesspool Admin
Jan 21, 2014
Rake submitted a new resource:

mmBBQ - Lua API Injector Download - injects an interactive codecaving Lua API to a win32 process

mmBBQ - Your process is yours

mmBBQ injects an interactive codecaving Lua API to a win32 process. It is easy to use, there are no dependencies and only little knowledge is required. It was initially build to create APIs for MMORPGs, therefore the following example sources are included in the SDK: Mythos (EU), Hellgate (EU) and Silkroad Online.
Read more about this resource...

Change Log

- added lua console autocompletion and history

add: Win64 version 50% done
add: Linux version 32/64 20% done
add: MacOS version 00% done
imp: pdcurses console
imp: syntax highlighting
[odbg] collaborated reversing plugin
[poex] complete API
[sro] inventory API and a whole bot.
[hell] path finding performance and quality
[myth] spamfilter currently defect
[myth] add support for Korean and Russian client


MSC: moved any target related code and stuff to ./targets

V3.1.0_RC1 Oct 2014 - maintenance, release candidate
BNO: refactoring, some performance improvements, updated documentation
BNO: improved injector: UAC aware, can now specify target from command line
BNO: builtin scripts are now gzip-compressed, and decompress 'on-the-fly' when used
BNO: made Lua memory allocator and deadlock timeout configurable
BNO: updated to LuaJIT 2.0.3
BNO: some bugfixes, code cleanup, improved mmbbq core stability
BNO: updated to LuaJIT 2.0.2
RLA: [poex] movement stuff
BNO: [odbg] added target label importer: autoaddr.lua
BNO: added codecave mode INTERCEPT_PATCH
RLA: [poex] MH and ZH
RLA: [poex] target added
BNO: implemented static heapmanager
BNO: updated to LuaJIT 2.0.1
MSC: odbg target improvements. An mmBBQ OllyDbg plugin.
MSC: finished work on lcpp. A Lua C-PreProcessor
BNO: added lua autocompletion and history

V3.0.2 Apr 2013 - hell, myth, bugfixes&improvements
MSC: [sro] updated to client version 1.406
BNO: improved lua exception handling
BNO: [hell] added radar hack
MSC+BNO: [hell] update to client version:
MSC: added first version of lcpp - Lua PreProcessor
MSC+BNO: fixed dbg.getModule() - crash and ordinals
MSC: fixed eject bug for INTERCEPT_NOPs
MWI: changed name to MSC :D
RLA+MWI: [sro] improved collision function and movement routing
RLA: updated to recent SRO version 28.08.2012
MWI: fixed the file read bug in asmdiff
MWI: 64Bit stuff, but nothing to release yet
MWI: increased luacall performance
MWI: fixed a memory leak
MWI: fixed dbg breakpoint module

V3.0.1 Aug 2012 - dbg module improvements
MWI: [myth/hell] fixed network packet parsing deadlocks
MWI: changed codecave threadid logic. 0:curr(default) -1:main
RLA+MIW: added libudis86 lua binding
MWI: improved dbg module. memory and execution breakpoints.
MWI: added shell32.IsUserAnAdmin() check to inject.lua
MWI: refactored asmcall module
MWI: added lua messageBox function
MWI: removed lua_checkargs(). switched to luaL_check...

V3.0.0 Aug 2012 - generic injection
MWI: made injector generic so any win32 can be used
MWI: fixed userinput using correct windows HWND
MWI: EXPERIMENTAL added asmdiff autoupdate mode
MWI: added asmdiff lua module

V2.4.1 Jul 2012 - LuaJIT added
MWI: update d apikey check to maj.min.mic version codes
MWI: [hell] client aniversary update 05.07.2012
MWI: slightly increased lua threadcall performance
MWI: added codecave lua module - setup codecaves from Lua
MWI: added asmcall lua module - invoke ASM directly from Lua
MWI: switched to LuaJIT 5.1 - ctypes and performance boost

V2.4 Jul 2012
MWI: changed from luadoc to ldoc which gives better HTML docs
MWI: [all] added "KEYUP" event for easier Lua key binding stuff.
RLA: added DirectX printing stuff (TRIANGLE,POINT,LINESTRIP)
MWI: [all] implemented score based spamfilter
MWI: fixed some GUI callbacks were not working / crashing
MWI: fixed spamfilter again
MWI: fixed "PAUSE" event

V2.3 Jun 2012
MWI+RLA: fixed a memory leak / close handle bug in debugging functions
MWI: fixed a bug in persistence.lua data storage manager
MWI: [all] added new events: debugEvent("MOUSE") debugEvent("KEYBOARD")
MWI: added mmBBQ SDK
MWI: fixed event.lua tests
RLA: [sro] added zoomhack
MWI: fixed Lua dofile() function wrapper to work as intended
RLA: updated [sro] to latest binary
MWI: fixed injector not causing to detect: unknown.exe
MWI: fixed start.bat for winXP32 users. thx@Coquitment

V2.2 14.06.2012
MWI: stabilized codecaving core. no more lockups finally

V2.1 12.06.2012
MWI: added more anti-anti hacking foobar
MWI: hardened apikey checks for security reasons

V2.0 08.06.2012
RLA: removed exported symbols from DLL build :) hi@magma

V1.9 03.06.2012
MWI: ingame command handling

V1.8 31.05.2012
RLA: [sro] grab item added
RLA: [sro] dies, pick, add events added
RLA: [sro] getting model string and some lua events added

V1.7 31.05.2012
MWI: added console function

V1.6 28.05.2012
MWI: [myth] update for client content patch
RLA: [sro] collosion detection
RLA: added sro_launcher
RLA+MWI: [sro] defeated hackshield :)

V1.5 04.04.2012
MWI: improved examples a lot (pot, shop, interact...)
MWI: [hell], [myth] improved environment module
MWI: [myth] targeting
MWI: ported hell_env module to [myth]
MWI: moved all targets into one dll
MWI: fixed symbols package loader
MWI: added [myth] character selection
MWI: implemented [hell] event.COMMAND
MWI: updated [myth] project
MWI: implemented common LUA itnerface for all targets
MWI: added lua relay connection
RLA: added new TARGET [sro]
MWI: added lua sockets
MWI: upgraded to lua5.2
MWI: added Lua function _G.getVersion()

V1.4 15.12.2011
RLA: instance reset bugfix
MWI: fixed hell_map.getCollision(...)
MWI: fixed moveit.lua
MWI: fixed hell_global.sendCommand("/w ...")
FSA: fixed hell_env object quality on "rocket" mods
MWI: fixed hell_global.isIngame()
MWI: added exe md5sum check override
MWI: added de-censor option in config.lua

V1.3 01.12.2011
NHO: LUA double precision by inline asm
RLA: added setdifficulty
MWI: added astar.lua routing module
MWI: improved default spam filter regex set
RLA: added rundll32 loader
RLA: fixed Win Vista bug
MWI: removed winject.exe from project
MWI: added MD5SUM check of target binary
RLA: improved instance reset
MWI: improved event module a bit for SW events
MWI: improve asmcall a bit

V1.2 24.11.2011
MWI+RLA: [hell] client version update

V1.1 23.11.2011
MWI: added windows installer
RLA: added event.CHAT for received chat messaged
RLA: added spamfilter
MWI: improved hell_inv module
MWI+RLA: added more examples

V1.0 18.11.2011 (RELEASE)
RLA: [hell] instance reset
RLA: hell_inv inventory lua module
MWI: added apikey checks

V0.9 15.11.2011
MWI: rewrote LUA DLL symbols package loader
MWI: reduced codebase
RLA: added own injection tool

V0.8 06.11.2011
MWI: implemented main thread lua call injection
MWI: improved stability
RLA: [hell] added collision detection for real movement

V0.7 27.10.2011
MWI: added main thread asmcall injection
RLA: [hell] added environment support
RLA: [hell] added skill support
RLA: [hell] added inventory support
MWI: added Autologin feature
MWI: added config.lua for customizing

V0.6 07.09.2011
MWI: implemented user32 input recorder using WindowMessageLoop
MWI: added persistence lua table support

V0.5 02.09.2011
MWI: [myth] updated to V33 02.09.2011
MWI: [hell] Added basic GUI support
RLA: Fixed gcc + mingw + lua issues

V0.4 10.08.2011
RLA: Ported project to work with gcc / mingw
RLA: Added [hell] target

V0.3 30.06.2011
MWI: [myth] Added attackToPrimary/Secondary functions
MWI: [myth] Added movement functions

V0.2 25.06.2011
MWI: Added LUA EVENT interface register() unregister() EVENT_...
MWI: Added LUA timed excecution delay(fctn, millis)

V0.1 24.06.2011
LUA apidoc see
DLL that covers movment, cam, coords and various other function
Winject loader
  • Like
Reactions: XdarionX


Cesspool Admin
Jan 21, 2014
This is what an actual hack made with this lib looks like

--- hell examples module
module("examples_hell", package.seeall, log.setup)

--[[ include any dependencies ]]--

local movebot_handle = nil;
local DIGITS = 0;
local function roundCoords(x,y,z)
    return math.round(x, DIGITS), math.round(y, DIGITS), math.round(z, DIGITS);
local function move(x, y, z)
    if isPaused() then return end
    if not (x and y and type(x) == "number" and type(y) == "number" ) then
        ERROR("move(x, y, z) supplied args are not numbers");
    -- third arg is opt. take current z
    if not (z and type(z) == "number") then
        local foo, bar, foobar = hell_map.getCoords();
        z = foobar;
    cx, cy, cz = roundCoords(hell_map.getCoords()); --getting current position
    dx, dy, dz = roundCoords(x, y, z);
    if(dx == cx and dy == cy and dz == cz) then
        INFO("move x:"" y:"" z:"" reached");
        movebot_handle = nil;
        vx, vy, vz = roundCoords(hell_env.checkCollision(x, y, z));
        dx, dy, dz = roundCoords(x, y, z);
        if(vx == dx and vy == dy and vz == dz) then
            INFO("move x:"..dx.." y:"..dy.." z:"" can be reached without collision");
            hell_cam.lookAt(x, y, z);
            INFO("move Collision at x:"..vx.." y:"..vy.." z:"..vz);
            movebot_handle = nil;
--- this starts a simple moveTo to algorithm that stop at the first collision
function moveTo(x, y, z)
    if not movebot_handle then
        movebot_handle = register(event.ONTICK, function() move(x, y, z) end);

--- stops the moveTo algorithm
function moveStop()
    if movebot_handle then
        movebot_handle = nil;
-- kill trigger
register(event.PAUSE, function(e)
    if (e.pause) then moveStop() end

-- Automatically takes Healing and Mana potions at given percentage
-- Usage:  startAP(50, 50)
local HP_READY = getCurrentMillis();
local MP_READY = getCurrentMillis();
local function callAP(percent_heal, percent_mana)
    -- [[ HEAL ]]--
    local maxhp = hell_char.getData()["Max HP"];
    local curhp = hell_char.getData()["Current HP"];
    if not maxhp or not curhp then return end
    if (curhp/maxhp*100) <= percent_heal and HP_READY < getCurrentMillis() then
        local obj ="medpack")[1];
        if obj then
            -- in hell HP causes cooldown of 10 secs and MP cooldown of 5 secs
            HP_READY = getCurrentMillis() + 10000;
            MP_READY = getCurrentMillis() + 5000;
            INFO("Auto Potter - HEAL");
    -- [[ MANA ]]--
    local maxmp = hell_char.getData()["Max Power"];
    local curmp = hell_char.getData()["Current Power"];
    if not maxmp or not curmp then return end
    if (curmp/maxmp*100) <= percent_mana and MP_READY < getCurrentMillis() then
        local obj ="powerpack")[1];
        if obj then
            -- in hell MP causes cooldown of 10 secs and HP cooldown of 5 secs
            HP_READY = getCurrentMillis() + 5000;
            MP_READY = getCurrentMillis() + 10000;
            INFO("Auto Potter - MANA");
--- call to start auto potter at a given percentage for health an mana
function startAP(percent_heal, percent_mana)
    register("STARTUP", function(e)
        if type(percent_heal) ~= "number" then percent_heal = 50 end
        if type(percent_mana) ~= "number" then percent_mana = 50 end
        INFO("Auto Potter - HEAL %i%%  MANA %i%%", percent_heal, percent_mana);
        register(event.ONTICK, function(e)
            if not isIngame() then return end
            callAP(percent_heal, percent_mana)

-- Automatically buys stuff when at merchant.
-- Usage: startAS({["large medpack"]=20, ["large powerpack"]=20, ["analyzer"]=20});
local AS_INVENTORY = hell_inv.MERCH_MISC;
local LAST_MERC = nil;
local function callAS(tabledata_buy)
    if LAST_MERC == hell_env.getNpcId_C() then return end
    LAST_MERC = hell_env.getNpcId_C();
    local tabledata_inv = {};
    -- first scan contents of players inventory
    for pattern,qty in pairs(tabledata_buy) do
        tabledata_inv[pattern] = 0;
        for _,i in pairs( do
            local qty = i.getStats("item_quantity");
            if qty == nil then qty = 1 end
            -- increment inventory table by found qty
            tabledata_inv[pattern] = tabledata_inv[pattern] + qty;
    -- now lets go shopping
    for pattern,qty in pairs(tabledata_buy) do
        local shop_item =[1];
        if shop_item ~= nil then
            local diff = qty - tabledata_inv[pattern];
            if diff > 0 then
                INFO("Auto Shopper - buy  %s[%i]", pattern, diff);
                --hell_inv.MAIN.move(shop_item); -- inv move is no go for shopping
                hell_env.buy_C(, LAST_MERC, diff);
                INFO("Auto Shopper - enough of %s[%i]", pattern, tabledata_inv[pattern]);
            INFO("cant buy %s[%i] here", pattern, qty);
--- call to start auto buy.
-- @param tabledata_buy is a table of string->qty mappings to have in inventory.
-- @usage startAS({["major health potion"]=20, ["major mana potion"]=20, ["scrying stone"]=20})
function startAS(tabledata_buy)
    register("STARTUP", function(e)
        -- dirty hack to check if merchant is available (test merchant inventory not empty)
        INFO("Auto Shopper - active");
        register("ONTICK", function(e)
            if not isIngame() then return end
            if AS_INVENTORY[1][1] then
                LAST_MERC = nil;

-- Opens Boxes, Doors, Ores ... automatically when beeing close to then
-- Usage: startAI()
local AI_MAXDIST = 2.5;
local AI_SCAN_DELAY = 5003;
local AI_IDS = {};

local AI_UNITFLAGS = {
    CRATE = 210,

local function callAI()
    -- scan for boxes and doors to use
    local player = hell_env.getPlayer();
    for id,timestamp in pairs(AI_IDS) do
        if hell_env.check(id) then
            local obj = hell_env.get(id);
            if timestamp < getCurrentMillis() - 2000 and obj and obj.getDist() < AI_MAXDIST then
                AI_IDS[id] = getCurrentMillis();
                if obj.unitflags == AI_UNITFLAGS.CRATE and obj.getStats("skill_seed 5") == nil then
                    INFO("Auto Interactor - CRATE [%i] %03i %s",, obj.unitflags, obj.model);
          "Use_Both_Weapons", obj.x,obj.y,obj.z);
--- call to start interactor
function startAI()
    register("STARTUP", function(e)
        INFO("Auto Interactor active");
        register(event.ONTICK, function(e)
            if not isIngame() then return end
    -- delay full scan
    timer(AI_SCAN_DELAY, function()
        if not isIngame() then return end
        AI_IDS = {};
        -- check for objects with requested unitflags
        for id, obj in pairs(hell_env.getEnvObjects()) do
            for s,unit_flags in pairs(AI_UNITFLAGS) do
                if obj.unitflags == unit_flags then
                    AI_IDS[id] = -1;
Attention! Before you post:

Read the How to Ask Questions Guide
99% of questions are answered in the Beginner's Guide, do it before asking a question.

No Hack Requests. Post in the correct section.  Search the forum first. Read the rules.

How to make a good post:

  • Fill out the form correctly
  • Tell us the game name & coding language
  • Post everything we need to know to help you
  • Ask specific questions, be descriptive
  • Post errors, line numbers & screenshots
  • Post code snippets using code tags
  • If it's a large project, zip it up and attach it

If you do not comply, your post may be deleted.  We want to help, please make a good post and we will do our best to help you.

Community Mods