雖然試過了 smali/baksmali ,
但如何換掉 .dex 裡的 opcode ,還是沒有什麼頭緒。
看了猛男 SITOS 的教學,
總算知道我們應該是先用原版的 baksmali 把 .dex 轉成 .smali 檔,
再用修改過的 smali 來把 .smali 編回 .dex 檔,只是在編的時候要把 "move" 編成 0x73 。
要怎麼修改 smali 呢?
想像中,應該是有個對照表,把 "move" 這個 instruction 對應到 0x01 ,
把這個對照表改一改,讓它對應到 0x73 就好了。
但是這個對照表在哪裡呢?找了半天都沒找到,還是得回去看 SITOS 的教學,
才發現是在 external/smali/dexlib/src/main/java/org/jf/dexlib/Code/Opcode.java 裡,
我想我一輩子都找不到吧。
改完之後,再 build 一次 smali ,
編一下 Foo.smali 之後,跑出 out.dex ,
再跑一跑 Dalvik ,的確跑出了一樣的結果,
但實在不知道怎麼驗證我真的有跑到 0x73 這個 opcode ,
其實有種說不出的空虛感。
沒有留言:
張貼留言