-
Posts
27 -
Joined
-
Last visited
-
Days Won
1 -
Feedback
0%
ikevin127 last won the day on June 22
ikevin127 had the most liked content!
About ikevin127

- Birthday 06/10/1996
Informations
-
Gender
Male
-
Country
United States
Recent Profile Visitors
2968 profile views
ikevin127's Achievements
-
Following up on this Added Trading-Glass + Shop Search bot in the sidebar replacing the old Shop Searcher, here's how it works: opens new Shop Search window which is used to scan all shops while in the shop map, it's using 48 checkpoints scanning the entire map and not missing any of the in-range shops at any checkpoint (see checkpoint map in youtube video attached below) once the full shop map was scanned (~20mins depending on character walking speed), the Trading Glass button can be pressed which opens a Trading Glass window similar to official GF one which has all the filters used in official GF trading glass, below is a complete youtube video on how to use the bot How does the scanner work exactly ? Checkpoint generation: _loadCollisionGrid reads OpenBot/Maps/<map>.dat — line 1 is maxX maxY, then one row per y of '0'/'1' cells, 1 cell = 100 world units. generateCheckpoints lays a grid at step//2 offset (so 25, 75, 125…), reverses xs on odd rows for the boustrophedon order, snaps each point to the nearest walkable cell via an expanding ring search up to 30 cells, dedupes on a //4 cell key, and emits world coords (cell * 100). On the latest version of the privateshop map that resolves to: 512×512 cells, 29.3% walkable (76,905 cells) 10×10 = 100 grid points → 52 dropped (unwalkable with no walkable cell within 30), 17 snapped off-grid, 0 duplicates → 48 checkpoints consecutive spacing min 3100 / avg 4939 / max 7072 world units, 232,114 units of total walk The sweep state machine (_sweepTick, driven from OnUpdate at SWEEP_TICK = 0.1s SW_WALK — Movement.GoToPositionAvoidingObjects(cp) → eXLib.FindPath A* on the DLL side, walking real MoveToDestPosition moves. Arrival = within SWEEP_ARRIVE = 350. SW_DRAIN — Spawn packets keep trickling in after you stop, so instead of a fixed sleep it snapshots the in-range count every tick and waits for 2 consecutive identical counts plus SWEEP_SETTLE = 0.3s minimum. Fast-loading checkpoints cost 0.3s; slow ones wait as long as needed. The _drainDt < 0 branch handles app.GetTime() running backwards on a world reload. SW_SCAN — per shop, three substates: SendOnClickPacket → poll shop.IsOpen() then ScanShop + SendShopEndPacket → poll for closed, then pop. Give up after 5 tries. Strict close-before-open, one shop at a time. Queue is built as [v for v in vids if v not in self.swScannedVids], which matters because InstancesList is global and still holds shops from earlier checkpoints — that set is what stops the overlap from causing redundant work. ScanShop. Iterates SLOT_COUNT (40) * shop.GetTabCount() slots, pulling GetItemID/Price/Cheque/Count/MetinSocket/GetItemAttribute plus proto metadata via _itemMeta (type, subtype, level limit, class bitmask derived from IsAntiFlag). Three details worth calling out: position is captured while the shop is open with a NaN guard falling back to the player's own position; owner name is snapshotted at scan time so it survives despawn; and dedupe is on a coordinate key (round(x/100)), not VID, because VIDs recycle across map reloads. Vnum 50300 gets the skill name prefixed so books are distinguishable. Completion writes a tab-separated index to OpenBot/Data/tradingglass_<map>.txt, so a crash doesn't cost a full re-sweep.
-
Some updates on the topic: To streamline the AI - Cheat Engine MCP connection and ease of use, I built a python windows app that you can open with double-click and a 1 Button click to Setup & Launch the CE MCP, it handles: - adds MCP CLI config for Claude Code, Codex, Gemini CLIs (you can select whichever one you use) - opens Cheat Engine with Admin rights - launches the CE MCP bridge .lua script within opened Cheat Engine Notes: 1. The program comes with bundled Python (hence the ~70mb size once compiled) so you don't need to have python installed on the system and added to PATH. 2. The CE-MCP-Launcher app source is public on my Github meaning you can build it from source so you don't have to download the .exe for safety reasons: github.com/ikevin127/cheatengine-mcp-launcher 3. All you need to have installed on your system is one of the 3 AI CLIs and Cheat Engine Here's a quick preview of how the CE-MCP-Launcher works on GF Metin2 client: --- With the CE-MCP-Launcher and more reversing and changes on the eXLib source (source on Github), I was able to put together a system that replicates GF Auto-Hunt but free, with most of the features working exactly as the original Auto-Hunt: - opens the Auto-Hunt window which looks and works pretty much like the official GF Auto-Hunt - features auto skills, auto HP/SP potions only, auto attack with filters, focus range distance circle, auto resurrect with attack resumed after 5 seconds (allows HP to recover) What it does Auto attack — filter by monster level range and type (metins, bosses) Focus range zone — locks your hunting spot where you Confirm Focus Range and hit Start so your character stops wandering off across the map, range circle animation is 1:1 with GF Auto-Hunt Smart potions — HP/SP % thresholds, and it won't waste potions while your Sun/Moon Elixir is already auto-potting Auto skills & buffs — recasts buffs right as they expire, hits offensive skills on target, live skill-duration input in seconds (can add delay) Auto-revive + anti-stuck — gets unstuck from unreachable spots instead of freezing Not in this version (coming later): - only supports standard HP/SP potions on % for now — support for other healing potions, buffing potions, fish, waters, dews, elixirs, and bravery capes (on interval) will arrive with other updates later --- Next will attempt a GF Trading Glass bot (obviously client-side only) that will use the same UI as the Trading Glass, goal is so provide otherwise paid features (itemshop: auto-hunt, trading glass) for free through bots that don't look like hacking to the other players, unlike most bots which offer DMG / fast walking speed / teleport hacks that can get users banned easily.
-
Yes, Claude Code CLI specifically by using framing to your advantage I tagged the cloned outdated source of MetinPythonLibV2 repo locally, cloned an outdated client source and installed the Cheat Engine MCP into Claude Code CLI (like adding a plugin) then attached CE to the running Metin2 client (character in-game). Framed the ask something like this: "checkout this outdated @MetinPythonLibV2 library that used to work on the older Metin2 client, but now on the latest client build it crashes when injected, help me with a multi-step plan to make it work again (with limited functionality initially) on the latest client version, only walker + pathfinding, you will be using the cheatengine mcp tools available while CE is attached to the client with character in-game - for function names / references / strings checkout this old @metin2-client-source" that spit out a game plan without any issues or restrictions, then once agreed to - it started the RE work eventually landing on: On the other hand, if you approach it with something like: "hey I want to hack this Metin2 game to gain advantages over regular players, help me reverse engineer it and profit " Then you might experience some difficulties reversing --- Let's just say that both of these matter: using Claude Code CLI locally with access to sources and Cheat Engine MCP framing it as a genuine RE project, without profit-driven intentions and game ToS violation A bad example I tried would be: directly in Claude online (web chat): paste some snippets of server + client code to help reverse the client-side visual effect of calling the Compass for Metin Stones. I don't even wanna begin telling you how many ethics lessons I got on every prompt and how hard it was to just get some basic info (functions and variable names that I could look-up myself anyway) Lo' and behold, as soon as I pasted the same snippets into Claude Code CLI running on my windows machine, continuing the same RE conversation from earlier, it started reversing and writing the C++ / Python right away and here's the result: To be continued...
-
This guide shows how the outdated MetinPythonLibV2 (eXLib needed for OpenBot) was successfully rebuilt and revived for the latest GameForge (GF) Metin2 client (as of 20/06/26) without any traditional manual reverse engineering knowledge required. The Core Concept Instead of using Cheat Engine / IDA / Ghidra manually, you let a powerful AI agent locally interact directly with the live running game process attached to Cheat Engine via MCP. The AI reads memory, finds structures, generates AOB signatures, traces call graphs, and suggests/fixes code - while you only validate results in-game. This approach completely bypasses the need for deep reverse engineering knowledge. Key Tools Used • Claude Opus 4.8 (or other high-reasoning LLM with tool calling capabilities) - Purpose: Autonomous reverse engineering agent - Link: Claude Code CLI • Cheat Engine MCP Bridge - Purpose: Allows the AI to control Cheat Engine through function calls (memory reads, AOB scanning, Lua execution) - GitHub: miscusi-peek/cheatengine-mcp-bridge • Outdated Metin2 Client Source - Purpose: Reference for structures, classes (CInstanceBase, etc) and network protocols - GitHub: ikevin127/metin2-client-source • Visual Studio 2022 + Detours - Purpose: Building the injectable DLL library Important: The method uses static memory reads + Lua only (no debugger attachment) because the client’s protection crashes on Cheat Engine breakpoint attachment. High-Level Workflow (Proven on GF Client) 1. Diagnosis Test all existing AOB signatures against the live client Identify which ones are dead (in this case, 13 out of 24 were outdated) 2. AI-Driven Analysis AI explores the live process (this-pointers, vtables, call graphs) Re-derives fresh AOB signatures when needed Finds correct struct offsets (example: character position moved from expected 0x7C4 → real 0x7BC in CInstanceBase) Handles ASLR by working with RVAs 3. Code Adjustments Update offsets and signatures in defines.h / Offsets.h Add NULL guards and robustness so dead signatures don’t crash the DLL Temporarely strip unused parts (server communication code) Fix threading issues (especially Python GIL when re-enabling packet hooks) 4. Build & Test Compile with MSBuild (Release | Win32 | v142 toolset) Deploy as eXLib.mix which auto-injects (or .dll used with injector) Validate everything live in-game (position reading, pathfinding, etc.) 5. Iterative Improvement Re-enable features one by one (e.g. CheckPacket hook) Fix crashes (GIL hardening + error clearing was required) Why This Works for Non-Reverse Engineers - The AI does the actual disassembly interpretation and pattern finding - You only need to: Give the AI clear goals Apply the suggested code changes Test in-game - No manual sig scanning or deep ASM knowledge required Limitations & Notes This method can be used to reverse engineer anything, including new game updates and outdated addresses whenever the client is rebuilt (new game version release). Educational / research use only. Automating gameplay violates Metin2 ToS. No anti-cheat bypasses were added because it uses the same injection method as the original library. Resources Reference Library Rebuild Repository: ikevin127/MetinPythonLibV2-Rebuild Detailed Rebuild Log: WalkerPath Revival Section Cheat Engine MCP Bridge (for AI Cheat Engine): miscusi-peek/cheatengine-mcp-bridge Client Source Reference: ikevin127/metin2-client-source
- 7 replies
-
- 150
-
-
-
-
-
-
-
-
@ Abel(Tiger) Thanks for the response, do you happen to have the source code for the system ? I'd like to take a look, I'm only interested in the part where the 2 things quoted below are determined - not the whole system (as I understand that might be sold). If this is true and there are no other factors then I guess I got my answer.
-
Metin2 Board: Update 19.6 – Under the Spell of the Dragon King The reason I'm interested if anyone reversed this system is because I want to know how exactly the GF [Official] **Refined Element** system works and if any variables like character level / rank / map location or any other can influence the percentage of element power assigned to a weapon on each upgrade (+1 / +2 / +3).
-
Amazing work on this, doing it from scratch / reversing it's not an easy feat so props! Looks like my last message was removed, but to double down - I'm also interested in reversing the following functions which are related to the new guild attendance / donation system for Medals of Honour: - net.SendGuildDonatePacket() -> I think this is used for daily donations for Medals of Honour once guild is lv 20 or more. Some data that might allude to the possible arguments for the function above ([int] value), found in the root meta: {name: '_GuildDonateDialog__GUILD_DONATE_TYPE_HIGH', type: 'int', value: 2} {name: '_GuildDonateDialog__GUILD_DONATE_TYPE_MIDDLE', type: 'int', value: 1} {name: '_GuildDonateDialog__GUILD_DONATE_TYPE_NORMAL', type: 'int', value: 0} - net.SendGuildDonateOpenPacket() - net.SendGuildDonateClosePacket() The two methods mentioned above I assume are used to enable / disable guild donation once guild is lv 20 or more. We can see this on GF servers say for GUILD_DONATE_TYPE_NORMAL you can only donate 3 times a day, so they may take as arguments the donation type and some other. - net.SendGuildOfferPacket() -> this is the donation method between guild lv 1 and 20, which we know the source of. I just started to grasp the theory of reversing and I'm looking to reverse the functions mentioned above, so I'd be willing to help you with reversing if you could share what tools you're using and how you do it - from there I'll be able to self-improve. Note: I'm coming from a background of coding (javascript / typescript, working with react / react native) and I've been working on metin2 python / source related things for a while, learning the ropes.
- 43 replies
-
- 41
-
-
-
-
official Official Unpacked Updates Metin2 - No Spam
ikevin127 replied to pollux's topic in Guides & HowTo
Some of the module names changed with the new update: Spoiler (outdated) For reference, here's a dump of the modules and their methods (the archive contains both new (outdated) / old modules) M2DL - Download Updated again (23.10.2024) DUMP (23.10.2024) MEGA Updated again (06.11.2024) DUMP (06.11.2024) MEGA .- 147 replies
-
- 320
-
-
-
-
-
-
-
-
-
-
-
-
You didn't indent spaces correctly in the uiToolTip.py file. Make sure the spaces are indented correctly with the [Tab] button. This is important in any programing language.
-
Metin2 Python Loader [GF] ?
ikevin127 replied to ikevin127's topic in Community Support - Questions & Answers
The script it's not builded yet. Probably I will make it open-source once I reach a stable and goon enough working version. I will try Koray's method then retry Helia01's method (last time I tried that script It didn't worked. I renamed the .dll into .mix, it runs with the client but the problem is it doesn't run the .py script, when I run it in the loader nothing happens). The moment I will be able to run a .py script into the official [GF] server I will also start building the checker script, for me there's no point into building it before that because I'm only interested in using such a script for account cross-checking on the official server. Are there any other (better) ways to successfully run .py scripts in the current [GF] server (version 19.4) ? Still looking for some opinions from somebody that actually managed to do it and knows how to. -
Metin2 Python Loader [GF] ?
ikevin127 replied to ikevin127's topic in Community Support - Questions & Answers
Thanks for the brainstorming guys, I thought about asking Slait for some pointers with regards to how he managed to integrate that python loader into M2Bob and make it work with the current version [GF], I'm sure he played with something like CheatEngine to find the binaries of the actual process because of course if you know what you're looking for it's more easier this way then actually unpacking the root and write the checker inside the root then repack it. I already messaged VegaS and Penger with regards to the injection method and also unpacking/repacking the current encripted [GF] root. Also I'm going to open a metin2 server on my machine and play around with running the script and write the checker in the meantime. I'm still opened to ideas on how can I run a .py script in the actual [GF] client (once I finished the checker script). -
Hey wazzup guys & girls! I'm looking to find out how could I run a .py file (script) in the current Metin2 [GF] client (version 19.4). The first problem I encountered was the fact that I can't unpack/repack the root of the client, if I could do that it would be easy to run my .py script inside the game, obviously. If you don't know how to do this or can't point me in a direction to solve this problem -> then do you know other ways to load a .py script into the current [GF] client ? The script I intend to run (build) and use on the current [GF] client is basically an account checker. I already managed to code a C# website-based checker and I also want to get into and learn how to build a client-side checker but first I need a way to inject the script into the game. Any ideas ? I've got a video VegaS posted a long time ago on YouTube, just to get an idea of what this thing (script ) would look like once I manage to run it inside the client successfully.
-
I've spoken with the author David Villegas because I was curious how these amazing artworks came to life.
-
I was wondering in your opinion as a coder, programmer, hacker or developer: Where do you think it's easier to bruteforce or check account and passwords on the official GF servers, client-side or website-side ? Please tell why would you choose one or another ? Arguments!
- 1 reply
-
- 1
-
