目標軟體為免費鼠鍵軟體AutoMouser v5.1,啟動時下方的cycles都是5,本來心想啟動預設值改為1應該不難吧,爬文找了ResourceHacker、ResEdit、cexescope、UltraEdit都搞不定,不對應該是說我不會用才對,不知道有沒有大大可以教教我,恩...還有這樣修改有算違法嗎?
裝好VisualStudio後,打開「適用於VS201x的x86 Native Tools命令提示字元」
ildasm /all /text [執行檔名.exe] /out=[il檔名.il]
resgen [上一步產生的.resources] [上一步產生的.resx]
觀察一下il跟resx裡面的InitializeComponent、enumericUpDown_cycles,可以找到一些有趣的東西。不過我沒直接看到它怎麼把預設值設成5,所以你再研究一下吧。
試了一下,發現...resx檔裡面似乎沒有預設值,所以可能是在InitializeComponent的時候設定的。這樣得去改il。
找了一下,在il的189515行,對numericUpDown_cycles執行了set_Value,這個值是Decimal型別,往上找可以找到它怎初始化這個Decimal,整段il大概是這樣:
在IL_45d0
這行可以發現:
IL_45d0: /* 1B | */ ldc.i4.5
看起來就是在這裡把值設成5(因為是Decimal,所以前後一大段都是在初始化Deciaml),把這一行的ldc.i4.5
改成ldc.i4.3
,然後編譯看看:
ilasm [il檔名.il]
然後執行一下編譯出來的exe檔,就會看到預設值改成3。
說真的看到大神的回覆我真是跪了,看來不是我這領域能去達到的啊,雖然小弟沒能順利完成,但還是非常感謝您肯花時間幫小弟研究這問題~~~
正常來說除非有提供修改的方式,
要不然不大可能能夠直接改預設值.
一般遊戲修改器改的也是記憶體,
有的是修改存檔資料,
不是EXE檔案.
但是你那個值修改了之後不能儲存嗎?