
1. 6137h 偏移對不上問題到底出在哪SkinMagic 這套老庫的補丁流程核心動作其實就一句話在指定偏移處把原始字節(jié)替換成目標字節(jié)。聽起來簡單但真正動手時你會發(fā)現(xiàn)最容易翻車的不是改什么而是改的位置對不對。6137h 這個偏移很多人第一次改完發(fā)現(xiàn)程序行為沒變化回頭一查——要么是 UltraEdit 里搜到的命中位置不是第二次要么是十六進制讀數(shù)看串了行要么是改完沒保存成二進制模式。這個場景適合誰適合手里有 SkinMagic 2.21 相關庫文件、需要做偏移級字節(jié)替換、但每次手工核對都心里沒底的人。你不需要是逆向專家但得能看懂十六進制編輯器的偏移列和字節(jié)列。我試過純手工對著表格一行行抄偏移抄到第四個庫文件時眼睛已經花了最后發(fā)現(xiàn) MD7 那組 455111h 和 455155h 差了幾十位整包白改。所以這篇不講一鍵補丁包只講一件事怎么用 TaoToken 接上的 Codex 幫你逐條比對目標文件、原始字節(jié)、目標字節(jié)是否成套把6137h 到底改沒改對這類逐字節(jié)問題定位清楚。TaoToken 在這里的角色只是提供 Key 和 Base URL讓 Codex 能跑起來做比對它不代替 UltraEdit 做跳轉也不生成成品補丁。2. 前置TaoToken 拿 Key 與 Codex 接入配置先把入口說清楚。打開官網 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注冊后在控制臺創(chuàng)建 API Key??刂婆_地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite Key 管理頁在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。拿到 Key 之后Codex 里填的 Base URL 是https://taotoken.net/api注意這里有兩個坑。第一不要在后面加/v1Codex 的配置項本身會處理路徑拼接你多寫一個/v1就會變成/api/v1/...這種重復路徑請求直接 404。第二Base URL 不要帶 UTM 參數(shù)UTM 是給網頁鏈接做來源統(tǒng)計用的填進 API 地址里會被當成路徑的一部分同樣配不通。我見過有人把帶?utm_source...的完整鏈接粘進 Base URL結果一直報連接錯誤排查半天才發(fā)現(xiàn)是參數(shù)污染了地址。Codex 側的配置大致是這樣具體字段名以你用的版本為準{ base_url: https://taotoken.net/api, api_key: 你的_TaoToken_Key, model: 你選用的模型名 }如果你用的是環(huán)境變量方式可以這樣設export OPENAI_BASE_URLhttps://taotoken.net/api export OPENAI_API_KEY你的_TaoToken_Key配完之后先別急著比對偏移跑一個最小請求確認通道是通的。模型對話入口在 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentchatutm_campaignrewrite 你可以先在網頁端發(fā)一句話確認 Key 有效再回到 Codex 里做文件比對。接入文檔在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 字段有疑問時對著文檔核一遍。3. 可復制配置讓 Codex 逐條核對偏移與字節(jié)配置通了之后關鍵是怎么把核對任務描述清楚。Codex 不會自己去翻你的二進制文件你需要把目標文件路徑、偏移、原始字節(jié)、目標字節(jié)這幾組信息喂給它讓它做成套性檢查。下面是我實際用的一套提示詞模板你可以直接改路徑和數(shù)值。我有一個二進制文件需要核對字節(jié)替換是否正確。 文件路徑./SkinMagic.dll 請幫我檢查以下偏移處的當前字節(jié) - 偏移 0x6137期望原始字節(jié) 75 41期望目標字節(jié) EB 4F - 偏移 0x6192期望原始字節(jié) FF 15期望目標字節(jié) EB 04 請讀取文件輸出每個偏移處的實際字節(jié)并判斷 1. 當前字節(jié)等于原始字節(jié)說明還沒改 2. 當前字節(jié)等于目標字節(jié)說明已改對 3. 當前字節(jié)既不是原始也不是目標說明改錯了位置或改錯了值對多個庫文件可以一次性列出來請依次核對以下文件的偏移字節(jié) 1. SkinMagic.dll0x6137 (7541-EB4F)、0x6192 (FF15-EB04) 2. SkinMagicLibMD6.lib0x16E0B1 (7541-EB4F)、0x16E10C (FF15-EB04) 3. SkinMagicLibMT6.lib0x18D997 (7541-EB4F)、0x18D9F2 (FF15-EB04) 4. SkinMagicLibMD7.lib0x455111 (752A-EB38)、0x455155 (FF15-EB04) 5. SkinMagicLibMT7.lib0x339DD7 (752A-EB38)、0x339E1B (FF15-EB04) 對每個偏移輸出文件名、偏移、當前字節(jié)、判定結果。這里有個細節(jié)要注意MD7 那組的原始字節(jié)是752A目標字節(jié)是EB38跟其他組的7541-EB4F不一樣。很多人抄偏移時把 MD7 也寫成7541-EB4F結果改完發(fā)現(xiàn)不對。Codex 比對時會把這個不一致直接標出來你一眼就能看到哪組數(shù)值對不上。如果你想讓 Codex 直接讀文件做比對可以用 Python 腳本方式讓它生成一段核對代碼import struct targets [ (SkinMagic.dll, 0x6137, b\x75\x41, b\xEB\x4F), (SkinMagic.dll, 0x6192, b\xFF\x15, b\xEB\x04), (SkinMagicLibMD6.lib, 0x16E0B1, b\x75\x41, b\xEB\x4F), (SkinMagicLibMD6.lib, 0x16E10C, b\xFF\x15, b\xEB\x04), (SkinMagicLibMT6.lib, 0x18D997, b\x75\x41, b\xEB\x4F), (SkinMagicLibMT6.lib, 0x18D9F2, b\xFF\x15, b\xEB\x04), (SkinMagicLibMD7.lib, 0x455111, b\x75\x2A, b\xEB\x38), (SkinMagicLibMD7.lib, 0x455155, b\xFF\x15, b\xEB\x04), (SkinMagicLibMT7.lib, 0x339DD7, b\x75\x2A, b\xEB\x38), (SkinMagicLibMT7.lib, 0x339E1B, b\xFF\x15, b\xEB\x04), ] for fname, offset, orig, targ in targets: with open(fname, rb) as f: f.seek(offset) cur f.read(2) if cur orig: status 未修改 elif cur targ: status 已改對 else: status 異常 print(f{fname} {hex(offset)}: 當前{cur.hex().upper()} 期望原始{orig.hex().upper()} 期望目標{targ.hex().upper()} - {status})這段腳本跑出來的結果就是你要的成套性檢查。如果某個偏移顯示異常說明那個位置既不是原始字節(jié)也不是目標字節(jié)大概率是偏移抄錯了或者文件版本不對。4. 驗證請求與成功結果UltraEdit 命中次數(shù)與偏移讀數(shù)并列復核Codex 比對只是第一層最終還得回到 UltraEdit 里做人工復核。這里的關鍵動作是把 UltraEdit 里搜到的命中次數(shù)和偏移讀數(shù)跟 Codex 的輸出并列貼出來對照。以SkinMagic.lib為例原文流程是在 UltraEdit 里搜SkinMagicTrial.dll關鍵字第二次命中時才替換成SkinMagic.dll剩余部分補0x00。這個第二次命中就是最容易出錯的地方——如果你在第一次命中就改了后面的字符串長度對不上整個 lib 的符號表就亂了。操作步驟是這樣的在 UltraEdit 里按 CtrlF 搜索SkinMagicTrial.dll每命中一次記下當前偏移。第一次命中的偏移和第二次命中的偏移都記下來然后確認你改的是第二次那個位置。改完之后把SkinMagic.dll寫進去剩余字節(jié)用0x00填充到原來SkinMagicTrial.dll占用的長度。對于 dll 和 lib 的偏移替換驗證流程是1. UltraEdit 打開目標文件CtrlG 跳轉到指定偏移 2. 確認光標所在位置的字節(jié)列顯示的是原始字節(jié)如 75 41 3. 切換到十六進制編輯模式UltraEdit 默認就是 4. 直接輸入目標字節(jié)如 EB 4F覆蓋 5. 保存文件 6. 重新跳轉到該偏移確認字節(jié)已變?yōu)槟繕俗止?jié) 7. 把這次讀到的偏移和字節(jié)貼給 Codex讓它跟預期值比對成功的結果長這樣Codex 輸出每個偏移的判定都是已改對UltraEdit 里跳轉到對應偏移看到的字節(jié)跟目標字節(jié)一致且文件大小沒有變化因為你是等長替換不是插入刪除。如果文件大小變了說明你不小心用了插入模式而不是覆蓋模式得撤銷重來。這里有個實用技巧UltraEdit 的十六進制模式下地址欄顯示的偏移是十六進制但有時候你從別處抄來的偏移是帶h后綴的如6137h填進跳轉框時要記得去掉h或者確認 UltraEdit 的跳轉框接受哪種格式。我踩過的坑就是直接把6137h粘進去結果跳轉失敗還以為偏移不存在。5. 本篇常見錯排查偏移對不上跳轉過去字節(jié)不是預期的最常見的原因是文件版本不對。SkinMagic 2.21 有多個構建版本不同版本的偏移可能不同。你先確認手里的文件是不是原文對應的那個版本。另一個原因是 UltraEdit 打開文件時用了文本模式而不是二進制模式導致偏移計算基于字符而不是字節(jié)。檢查方法是看狀態(tài)欄是否顯示HEX或二進制。Base URL 配了但 Codex 報 404九成是多了/v1。Codex 的 Base URL 應該填https://taotoken.net/api不要加/v1也不要加任何查詢參數(shù)。如果你從瀏覽器地址欄直接復制了帶 UTM 的鏈接把?后面的全部刪掉。改完重啟 Codex 或重新加載配置。Codex 讀文件報權限錯誤如果你讓 Codex 直接讀二進制文件做比對確保文件路徑是它有權訪問的。Windows 下路徑用雙反斜杠或正斜杠Linux/macOS 下注意文件權限。實在不行就讓 Codex 生成核對腳本你自己在本地跑把輸出貼回去讓它分析。改了字節(jié)但程序行為沒變化先確認你改的是運行時實際加載的那個文件。有時候目錄里有多個同名 dll程序加載的是另一個路徑下的。用進程監(jiān)視工具確認加載路徑或者直接把改過的文件替換到程序實際讀取的位置。另外確認改完后沒有其他構建步驟覆蓋你的修改。MD7 那組數(shù)值跟其他組不一樣是不是抄錯了不是抄錯。MD7 的原始字節(jié)確實是752A目標字節(jié)是EB38跟 MD6/MT6 的7541-EB4F不同。如果你在 Codex 比對時發(fā)現(xiàn) MD7 顯示異常先檢查你是不是把 MD7 也寫成了7541-EB4F。這個不一致是原文就有的不是筆誤。UltraEdit 搜索命中次數(shù)不對搜SkinMagicTrial.dll時如果命中次數(shù)不是預期的兩次可能是文件里還有其他包含該字符串的位置或者你搜的是另一個文件。把每次命中的偏移都記下來跟 Codex 確認哪個偏移才是需要替換的那個。不要憑感覺選第二次要用偏移讀數(shù)說話。6. 長期做偏移核對把 Codex 用成固定工具如果你經常需要做這類字節(jié)級核對建議把 Codex 的接入配置固定下來Key 用 TaoToken 的Base URL 固定填https://taotoken.net/api。每次有新文件要核對直接套用第 3 節(jié)那個提示詞模板把偏移和字節(jié)數(shù)值換掉就行。模型對話入口可以用來快速驗證 Key 是否有效接入文檔用來查字段格式。對于需要長期跑編碼任務或 Agent 流程的場景可以了解 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。ClaudeCodeAnthropic 相關入口在 https://taotoken.net/claudecode-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaudecode-anthropicutm_campaignrewrite 有需要時可以去看看。最后說一個實際經驗偏移核對這件事最怕的不是改錯而是改錯了還不知道。Codex 的價值在于它能把當前字節(jié)、原始字節(jié)、目標字節(jié)三者并列擺出來讓你一眼看到哪個偏移是異常狀態(tài)。UltraEdit 負責跳轉和實際修改Codex 負責核對和判定兩者配合6137h 這種問題就不會再靠猜了。