神魔之塔在今天進行了「仙界的律令」 – 5.0版的更新,很自然的,4.61版廣為流傳的不死版Apk檔案已經無法使用。不想當伸手牌的心情,相信很多人都會有,但到底要怎麼做呢?其實,稍微做點功課,了解一下,就會發現它其實真的沒那麼難哦。在這篇文章中,你會學到怎麼反編譯DLL檔案,並對其進行編輯,以達到自己想要的副程式之效果,但並不會告訴你不死版的副程式位在於哪裡、該修改哪個部分等等,主要是為了讓讀者都能自己發掘到探索程式碼的樂趣,此外也不希望自己是壓垮駱駝的最後一根稻草。

1115更新:

最近反編譯神魔之塔的Apk的話題又開始變得火熱,感謝 apk.tw – 實習版主crazy411sam的拋磚引玉,看到許多文章都會連結到本站,有點害羞也有點欣慰,7.0之後加入的驗證我也還不知道要怎麼繞過,大膽嘗試了幾種夠帶勁的方法,結果都直接閃退(羞)。一起討論的感覺很好,能被記得的感覺也很好,謝謝Apk的高手們。

工具準備:

步驟教學:

第1步 將神魔之塔的Apk下載下來,將副檔名改為zip壓縮檔。
1 - 反編譯Apk教學 - 神魔之塔不死版?自己動手做!

第2步 內容物如圖,把它解壓縮到一個資料夾中放著。

%E5%9C%96%E7%89%87+001 - 反編譯Apk教學 - 神魔之塔不死版?自己動手做!

第3步 找到根目錄assetsbinDataManaged底下的Assembly-CSharp.DLL,這就是我們要進行編輯的DLL檔案。

%E5%9C%96%E7%89%87+002 - 反編譯Apk教學 - 神魔之塔不死版?自己動手做!
第4步 打開ILDAsm,點選Open載入Assembly-CSharp.DLL,並點選Dump將所有程式碼以IL語言匯出。
%E5%9C%96%E7%89%87+006 - 反編譯Apk教學 - 神魔之塔不死版?自己動手做!

第5步 匯出選項,保留預設值,直接按下OK即可。

%E5%9C%96%E7%89%87+007 - 反編譯Apk教學 - 神魔之塔不死版?自己動手做!
第6步 將它匯出到另一個資料夾。
%E5%9C%96%E7%89%87+008 - 反編譯Apk教學 - 神魔之塔不死版?自己動手做!

第7步 開啟ILSpy,並載入Assembly-CSharp.DLL。

%E5%9C%96%E7%89%87+003 - 反編譯Apk教學 - 神魔之塔不死版?自己動手做!

第8步 選擇你習慣的語言來找到你想要修改的副程式,例如VB。找到你想要修改的副程式,將它用你習慣的語言讀懂一遍,然後轉換為IL語言。接著開啟你剛剛匯出的IL檔,將程式碼修改成你想要的樣子,然後儲存。

%E5%9C%96%E7%89%87+005 - 反編譯Apk教學 - 神魔之塔不死版?自己動手做!

第9步 在任一個資料夾上的目錄位置上輸入DOS指令:c:windowsmicrosoft.netframeworkv4.0.30319ilasm.exe /dll/resource=匯出IL檔檔名.res 匯出IL檔檔名.il ,接著ISDAsm會開始幫你將IL檔壓回DLL檔。

%E5%9C%96%E7%89%87+009 - 反編譯Apk教學 - 神魔之塔不死版?自己動手做!

第10步 將壓好的DLL重新命名為Assembly-CSharp.DLL,將原始的apk檔案用WinRAR或7-zip開啟,將剛剛的DLL丟回該目錄取代原檔案。

%E5%9C%96%E7%89%87+010 - 反編譯Apk教學 - 神魔之塔不死版?自己動手做!

第11步 將DLL取代後將新的Apk重新簽名,即可放到手機上測試安裝。

  •  
  •  
  •  
  •  
  •  
如果這篇文章對您有幫助的話,歡迎點選上方的 Like 按鈕給我一點鼓勵喔!

485 則迴響

  1. 唔…多謝分享。基本知道在做什麼,不過ILSpy解出來的Assembly-CSharp.DLL底下那票一大串…要找哪個參數?除了步驟八其他的都沒有疑問…麻煩至少透露該修改的位置…謝謝…

  2. 現在流傳的不死版都只能使用鈦備份還原,是否也可以改成跟之前WillyPillowr大大的修改版一樣,可以登入?

    匿名
  3. C大請問一下 假設我有4.6.x版 別人修改過的 群體攻擊+無敵+#$%^&功能版本 可否透過您的教學 移植到5.0.X版本上呢? 謝謝

    匿名
  4. 大大可以請你把第8步在說得清楚一點嗎?不好意思…. 比方這幾個地方..
    然後轉換為IL語—————-這裡是要另存嗎?…Save Code…成Assembly-CSharp.il嗎?
    接著開啟你剛剛匯出的IL檔————-這裡是開啟之前的tos.il 還是Assembly-CSharp.il
    還有tos.il這個轉出來的檔案..只是放著就好了嗎? 後面不用再開啟她或是修改它嗎?
    煩請解答…..謝謝~感恩~

  5. 我是用別的方式拆解,初次看到80萬行的的數據要比對來,看眼睛都快花掉了

    建議大家可以先爬文,下載所需要的工具

    有顏色的字體的部分就是要大家仔細去看

    先爬文後再摸索會比較好,其實爬文章你會發現大家都在問同樣的問題

    其實,提問中都已經有答案在裡面了,這有就是為什麼會的人不想回答重複的問題的關係

  6. 轉換為IL語—————-指的是ILPSY上選單可選擇C#、VB、IL,選擇IL,接著開啟你剛剛匯出的IL檔————-指的是之前的tos.il,要改的地方就是這個檔案

  7. 沒基礎完全不行ˊˇˋ

    剛剛比對4.61正常和不死IL有600多個相異…很多只是上下顛倒 再來就不懂了ˊˇˋ

    從重要核心看…找到HP處理 之後也卡關了 哈哈ˊˋ

  8. 第7步
    用ILSpy開il檔
    出現
    // C:UsersAdministratorDownloads神魔官方Assembly-CSharp.il
    // This file does not contain a managed assembly.
    看不到資料

    匿名
  9. 可以去下載EmEditor這樣去比對速度也很快
    我也是兩個帳號在玩,目前已將官方版本以及mycard版改成無限復活

    本身如果對手機的apk有研究,看上面的圖文教學以及問答中很多改的答案就在裡面(差別在於比對的功力

    講的太明顯,只是讓官方去補強這個漏洞

  10. c:windowsmicrosoft.netframeworkv4.0.30319ilasm.exe /dll/resource=匯出IL檔檔名.res 匯出IL檔檔名.i<<這個要貼哪裡…而且要怎麼覺出DOS…

    匿名
  11. 第9步 我輸入c:windowsmicrosoft.netframeworkv4.0.30319ilasm.exe 出現1個視窗後 一下就消失了…
    輸入+檔名直接顯示找不到檔案…去c:windowsmicrosoft.netframeworkv4.0.30319ilasm.exe開這程式也開不起來..
    也是一下就消失了..有大大知道原因??

    匿名
  12. 有辦法 不用 鈦備份 就能玩的嗎 =ˇ= 之前的不死版好像就沒用鈦備份 可以拿4.61不死板 和 原版的5.02 來比較看看 改了什麼 ^___^

    匿名
  13. Microsoft(R) .NET Framework IL Assembler. Version 2.0.50727.1433

    Copyright(c) Microsoft Corporation. All rights reserved.

    Assembling 'microsoft.reportviewer.webforms' to DLL –> 'microsoft.reportviewer.dll'

    Could not open microsoft.reportviewer.webforms

    ***** FAILURE *****

    我第九步驟出現這個唉…

  14. 我用4.61可免鈦可直接登入的範本下去改5.01,可是再轉回apk之後,安裝到一半,出現錯誤。是否有高手可幫看檔案問題,,,謝謝

    匿名
  15. 我把舊的不死版跟5.0版的dl都叫出來看了
    能不能提示要改的東西到底在哪裡
    我改了MVID括號裡的東西,可是還是不能用啊
    求大大教學了
    .assembly 'Assembly-CSharp'
    {
    .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ….T..WrapNonEx
    63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows.
    .hash algorithm 0x00008004
    .ver 0:0:0:0
    }
    .module 'Assembly-CSharp.dll'
    // MVID: {AC2254FF-C1C3-4C0B-9BA7-6A5376FA3040}
    .imagebase 0x00400000
    .file alignment 0x00000200
    .stackreserve 0x00100000
    .subsystem 0x0003 // WINDOWS_CUI
    .corflags 0x00000001 // ILONLY

    匿名
  16. 比對一下可能跟到的很少 但是哪東西也太多了吧 請問有沒有什麼比對程式呢(哈哈 這樣好像另外方面的伸手牌
    還有疑似是 "Labyrinth" 能否交的更清楚呢(g-mail可嗎
    [email protected] (只求改法 不求檔案 想自己製作 謝謝大大辛苦寫這篇文

  17. 大大我想問是否能拍影片來幫助教學?本人不想無恥去伸手跟人要 想自己做做看但一直找不到問題出在哪個部分

    匿名
  18. 我目前已經道第八步用記事本開啟IL也比對了4.62板的
    其中一行的一小段跟4.62版不一樣 且很特殊不知道是不是改這個
    另外還有用IL Spy的有個數值跟4.62不太一樣不確定也要不要改
    希望大大能給點提示

  19. 第9步 在任一個資料夾上的目錄位置上輸入DOS指令:c:windowsmicrosoft.netframeworkv4.0.30319ilasm.exe /dll/resource=匯出IL檔檔名.res 匯出IL檔檔名.il ,接著ISDAsm會開始幫你將IL檔壓回DLL檔。

    這步驟不懂

    匿名
  20. 板主您好:
    不知是否能夠提供陸阪神魔復活版!因為我試過改!但始終無法安裝!可能沒學過相關語言!所以都看不太懂!或者求教學!謝謝!!

  21. 第9步 在任一個資料夾上的目錄位置上輸入DOS指令:c:windowsmicrosoft.netframeworkv4.0.30319ilasm.exe /dll/resource=匯出IL檔檔名.res 匯出IL檔檔名.il ,接著ISDAsm會開始幫你將IL檔壓回DLL檔。
    這步驟是不是有問體ㄚ

    匿名
  22. 想請問 il 檔案到底是用記事本編輯也可以還是只能用ILSpy編輯…用記事本開啟找到快眼花了…也收尋關鍵字始終找不到相關檔案…是我錯過了什麼嗎…請高手指點一下…

  23. 謝謝大大分享
    學過一點C語言,花了一點時間做對照改了一下,已成功,解說非常詳細,但不知是否有風險?數據回傳或更新之類的地方

    匿名
  24. 第九步有誤,不能在任一個資料夾輸入,要在有res跟il這兩個檔案的資料夾中輸入才有用
    就直接開個新資料夾把這兩個檔案丟進去
    然後在這資料夾上的目錄欄輸入上述指令就好了

    匿名
  25. 我目前卡在
    在任一個資料夾上的目錄位置上輸入DOS指令:c:windowsmicrosoft.netframeworkv4.0.30319ilasm.exe /dll/resource=匯出IL檔檔名.res 匯出IL檔檔名.il ,接著ISDAsm會開始幫你將IL檔壓回DLL檔。
    不管怎麼叫出來都還是會跑出來就馬上消失
    就算到了那個資料夾用CMD CD成功開啟了
    但一直跑出系統無法找到指定路徑

    匿名
  26. 看了一整天.也弄出4.62和5.0版對照~完全看不出來哪不一樣,密密麻麻的數字,搞不懂什麼指令是做什麼的.怎麼改呢~
    外行人就是外行人~看來沒有一點基礎是不行的,看了版大的提示想說自己來搞一下看看.沒法度[email protected]@完全卡在第8步不知怎麼改~

  27. 板大 我卡在第九步
    輸入指令後 有跑出CMD出來

    原本的資料夾多出一個PDB檔案 並沒有DLL檔 CMD自動關閉後 PDB檔案也不見了 請問該如何處理?

    我有在FB留言

  28. 版大
    DLL沒有出來啊??

    最後面出現
    502m.il(244758) : error : syntax error at token 'instance' in: instance void As
    kRetry () cil managed

    我東西都丟到C槽再CD跳到C槽
    打上指令了結果沒有請問是哪裡出問題了

  29. 第9步 在任一個資料夾上的目錄位置上輸入DOS指令:c:windowsmicrosoft.netframeworkv4.0.30319ilasm.exe /dll/resource=匯出IL檔檔名.res 匯出IL檔檔名.il ,接著ISDAsm會開始幫你將IL檔壓回DLL檔。

    不知道為甚麼 直接出現dos畫面不到1秒後閃退 沒新的dll出來 能否求個解釋 我是命名tos 所以上面那串有改tos.res跟 il

    匿名
  30. 版主你好 我已經改好 IL了 但是第九步不會用 可以請版大貼上你輸入的路徑嗎 我名字都跟你一樣 就是中間那空白 不知道是甚麼東西 所以黑框只有跑出來 不到一秒 就消失了

  31. Microsoft Windows [版本 6.1.7601]
    Copyright (c) 2009 Microsoft Corporation. All rights reserved.

    C:Usersmiro>c:windowsmicrosoft.netframework64v2.0.50727ilasm.exe /dll/res
    ource=Assembly-CSharp.res Assembly-CSharp.il

    Microsoft (R) .NET Framework IL Assembler. Version 2.0.50727.5420
    Copyright (c) Microsoft Corporation. All rights reserved.
    Assembling 'Assembly-CSharp.il' to DLL –> 'Assembly-CSharp.dll'
    Could not open Assembly-CSharp.il

    ***** FAILURE *****

    為何押

    匿名
  32. 請問為何我無法用第9的c:windowsmicrosoft.netframeworkv4.0.30319ilasm.exe /dll/resource=匯出IL檔檔名.res 匯出IL檔檔名.il
    我這兩個檔案是tos.res tos.il
    所以我在資料夾路徑
    c:windowsmicrosoft.netframeworkv4.0.30319ilasm.exe /dll/resource=tos.res tos.il
    我使用後 顯示找不到'file:///c:/windows/microsoft.net/framework/v4.0.30319/ilasm.exe%20/dll/resource=tos.res%20tos.il'。

    匿名
  33. 第8步 這段(接著開啟你剛剛匯出的IL檔,將程式碼修改成你想要的樣子,然後儲存。)
    我按開啟舊檔 沒有顯示我剛剛匯出的IL檔 還要改成(All.files) 才看得到
    這樣子強迫開啟後 會顯示黃色驚嘆號 以及
    // D:神魔之塔修改TOS.il
    // This file does not contain a managed assembly.
    這兩段話

  34. 壓回DLL檔求解…
    打完 c:windowsmicrosoft.netframeworkv4.0.30319ilasm.exe /dll/resource=tos.res tos.il 之後
    出現一個視窗然後一下子就消失了
    也沒多出一個DLL檔

  35. 大大我改好程式碼之後輸入c:windowsmicrosoft.netframeworkv4.0.30319ilasm.exe /dll/resource=匯出IL檔檔名.res 匯出IL檔檔名.il

    可是卻找不到路徑請問該怎麼辦

  36. 我也是在第九步卡住
    c:windowsmicrosoft.netframeworkv4.0.30319ilasm.exe /dll/resource=tos.res tos.il
    這樣對嗎
    為什麼我一打開後
    跑出:
    could not open tos.il
    *****failure*****

  37. 不好意思 請問一下丟回dll之後不能安裝apk是哪裡出問題 我不是修改不死 ,我看到有個luckydraw好像是抽卡的舊修改看看哈哈 不知道能不能成功

    匿名
  38. 經過大大的說明我也改成功了,很明顯的提示,
    多多爬文是對的,其實自己動手改更記得住,
    謝謝大大無私的分享,我絕不外洩。

    匿名
  39. 版主你好,我現在有一些問題想請教,希望可以撥冗幫我解答一下,謝謝
    我下載了正常5.02版跟不死4.61版,兩個版本我都把il檔做出來了
    我現在是要把正常5.02版跟不死4.61版的兩個il檔做交叉比對嗎?
    還是我要把不死4.61的il檔,去跟正常5.02版ILSPY裡面的Labyrinth這邊做交叉比對呢?
    現在改不清楚要要用什麼來交叉比對,麻煩版主幫我解答了
    謝謝

  40. 看了一堆密密麻麻的程式碼….只恨我當初沒好好學啊!

    請教大大可以再透露 是更改一串字串 還是數字而已呢…?

    如海一堆的程式碼 真的不知該從何改起Q_Q

  41. 關於第9步 也可以先
    去找你的ilasm.exe在哪 通常在C:WindowsMicrosoft.NETFramework裡面
    如果是的話 把你的il檔 跟res檔也放到這個路徑
    打開cmd 輸入 "cd C:WindowsMicrosoft.NETFramework"
    然後再輸入 "ilasm /dll 匯出IL檔檔名.il /resource=匯出IL檔檔名.res"
    例如你的il叫abc.il 那就打 "ilasm /dll abc.il /resource=abc.res"
    如果還是不行 就在這資料夾裡找ilasm.exe右鍵內容 把"以系統管理員權限執行"打勾
    就可以了

    匿名
  42. 原來有這種反編譯的方法
    程式碼都寫再DLL裡面了
    不知是否可以提示一下當HP歸0的事件大概在什麼地方?
    我自己會寫一點程式
    但這種莫名的事件名稱我真的無法理解(我英文不好)
    感謝指點

  43. .method public hidebysig
    instance void ApplyEffectToPlayer (
    float32 magnitude,
    [opt] bool forceHeal
    ) cil managed
    {
    .param [2] = bool(false)
    // Method begins at RVA 0x6310
    // Code size 1 (0x1)
    .maxstack 8

    IL_0000: ret
    } // end of method Labyrinth::ApplyEffectToPlayer

    .method public hidebysig
    instance void HealPlayer (
    float32 amount,
    [opt] bool isPassiveSkillEffect
    ) cil managed
    {
    .param [2] = bool(false)
    // Method begins at RVA 0x6314
    // Code size 1 (0x1)
    .maxstack 8

    IL_0000: ret
    } // end of method Labyrinth::HealPlayer

    .method public hidebysig
    instance void CheckEndBattleZone () cil managed
    {
    // Method begins at RVA 0x6318
    // Code size 1 (0x1)
    .maxstack 8

    IL_0000: ret

    請問IOS這是要改哪

    123
  44. 大大你好 已經成功改出外掛版登入器 可是進去後都沒有改變…..請問是哪邊沒改成功(例如:怪物的技能 轉珠時間 CB的%數)

    匿名
  45. 下面是每次戰鬥回傳的項目:
    *SkillUsedTime
    *retryTime
    *dieTime
    *maxDamageTaken
    *totalDamageTaken
    如果你的hp都壓在1的話,你以為官方是檢查你是不是放根性正副隊長嗎?錯了!因為maxDamageTaken是計算含主被動技後的累計扣血量,簡單講,

    如果你滿血量10000,第一次被打20000,
    隊長龍蛋,totalDamageTaken = maxDamageTaken = 9999,dieTime=0,retryTime=0。
    不死版,totalDamageTaken = maxDamageTaken = 20000,dieTime=1,retryTime=0。
    看出問題了嗎?
    很多人都是改官方故意留下來的一個區域變數 flag 達成不死(因為只要改0變1),這樣就不需要理解 IL 程式碼也能改程式,只要官方生氣這些人就全部停權了!祝好運!

    其他不重要的數據:
    CheckIsAutoMoveGem()
    eatGemRound
    waveMovedTime
    gameplayTime
    numOfwave
    monsterNum
    monsterAttackTime
    minHP
    maxHP
    minDamageTaken
    maxCombo
    maxAttack
    gamePlayError
    restoreCount
    minRecoverHP
    maxRecoverHP
    totalRecoverHP
    maxAttackPerRoundDuringBossWave

  46. 大大感謝你的教學 我已經改成功了(不過要用鈦備份才能登入)
    另外 我有看到幾個副程式 好像是偵測是否作弊的
    請問那個有辦法改嗎? (感覺如果可以改,那被鎖機率應該下降很多)

  47. 我也是卡在反譯 dos跳出來後 不到一秒又消失 輸入c:windowsmicrosoft.netframeworkv4.0.30319ilasm.exe /dll/resource=匯出IL檔檔名.res 匯出IL檔檔名.il 沒反應 是不是有少步驟 還是能更詳細解說呢

  48. 請問步驟9做成的dll會放在哪?
    我檔案名稱是 tos.il & tos.res
    然後我只有用編輯器去修改 tos.il
    我輸入c:windowsmicrosoft.netframeworkv4.0.30319ilasm.exe /dll/resource=tos.res tos.il後
    卻找不到tos.dll

  49. 提供版大一個個人心得
    如果修改的il有錯誤
    通常會導致步驟9在壓回dll檔案時會沒出現dll檔案
    BTW
    因為個人IL語言根本可以說是不懂
    想請問版大
    如果我想要新增程式碼要怎麼打?
    我有找到疑似計算(和諧)的地方
    但新增後我包出來的apk都不能安裝
    能交流一下嗎?

  50. 版主 我可以請問你這個"反編譯apk"的原理是什麼嗎!

    那我們修改好了 官方可以利用什麼方式阻擋我們這些修改版呢 ?

    關於查看到的遊戲內部程式碼 就是這套遊戲的工程師們所寫的嗎?

    那這些程式碼不就控制了所有遊戲內容

    如現在最流行的不死版本 就是不讓角色血量低於1

    只要是遊戲內部自己會去控制 而不是透過官方伺服器控制的

    就能從程式碼去修改

    官方因該有能力去寫出 很難反編譯的遊戲檔案吧 @@?

  51. 版主我照您教得做
    把修改好的dll覆蓋後
    加到zip壓縮檔
    之後改附檔名aip->apk
    再放到 APK Multi-Tool V1.0.11 繁體中文化版place-apk-here-for-signing
    再打開Script.exe執行編號18的動作
    但是我執行後它只有跑 Signing "apk檔案名稱"
    之後就跳回剛打開時的介面了
    我到底哪裡錯了

發佈回覆給「原住明」的留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *