多謝大家支持!
昨天說了一下反編譯與剝殼(.net破解一(反編譯,反混淆-剝殼,工具推薦)),今天就來修改修改dll,為了方便,我自己寫一個簡單程序用來測試
代碼如下:
一個 ConsoleApplication,輸出Hello World.
現在我想修改它,讓他輸出我想要的內容,或者直接改變該方法的功能,但是沒有源碼,只有Console.exe
工具:Reflexil 它是Reflector的一個插件
工具獲取:1.可以直接到Reflector官網下載http://www.red-gate.com/products/dotnet-development/reflector/add-ins
2.打開Reflector, Tool=>Add-ins=>Add-In Gallery, 跳轉到 上面的下載地址
下載好Reflexil后,在Add-ins 界面,點"+",選擇Reflexil.Reflector.AIO.dll,然后Close
現在在Tool中會多一個Reflexil選項
它的界面
用法:
把我剛才寫的Hello world拖進Reflector,我們選中程序集,命名空間,類命,方法, Reflexil的界面都是不一樣的.
這里可以知道,我們能注入類,接口,枚舉,方法,等,也可以重命名,刪除.
現在我們來添加一個方法試試,選擇Inject method Item Name:Demo(此時只能聲明無參,無返回值的方法,后面會講什么添加這些)
點ok會給出警告
意思就是,做大改動(注入,刪除,重命名)時你是看不見結果,讓你保存一次在導入新的dll文件,那就保存一次
保存好后,把新dll拖到Reflector中,就會發現在 Programe中多了一個Dmeo方法.
現在來給Demo 寫實現
選擇Demo 后右邊的界面為:
選擇Main:
instructions 中是IL指令, 高玩可以直接修改添加指令,但不是高玩咋辦?
我們選擇Replace all with code... 替換所以代碼.
不過在這之前 先在Parameters添加一個參數string name,並在Attributes 將Return type設為stirng
我再次點擊Replace all with code... 代碼已經更新為
修改完成后,點compile 如果沒有錯誤,就會生成IL指令,點ok就行
現在在來修改一下Main方法,調用Demo
代碼已經改完,現在保存看看執行效果:
原程序:
修改后程序:
總結:上一篇文章我是需要登錄,而現在我們也知道方法,只需要找到對應的登錄方法,直接改成返回true,就能登錄了
發現問題 請留言,如果喜歡請推薦一下,
轉載請注明出處! 謝謝