結果數值事無忌憚地被修改
煩擾了一星期總算有點微目,小弟在這裡分享一下
是次的測試環境為:
Windows XP SP3
Flash CS3 ActionScript 3 FlashPlayer 9
Cheat Engine 5.5
我們要測試的是myNum這個數
我用最正路的方法define myNum, 並以一個textField 來顯示
做了一個button來改變myNum:
var txtDisplay:TextField = new TextField(); var storage:Object = new Object(); var myNum:int = 0; txtDisplay.autoSize = TextFieldAutoSize.LEFT; txtDisplay.appendText(myNum.toString()); addChild(txtDisplay); btn.addEventListener(MouseEvent.CLICK, btn_click); function btn_click(e:MouseEvent) { myNum++; txtDisplay.text = myNum.toString(); } |
遺憾地
這個寫法小弟只用了三次高階搜尋就能找出並鎖住myNum了
那解決方法呢??
其實不難
我的做法就是把myNum塞進object 就可以了:
var txtDisplay:TextField = new TextField(); var storage:Object = new Object(); storage.myNum = 0; 就是把myNum塞進一個object裡 txtDisplay.autoSize = TextFieldAutoSize.LEFT; txtDisplay.appendText(storage.myNum.toString()); addChild(txtDisplay); btn.addEventListener(MouseEvent.CLICK, btn_click); function btn_click(e:MouseEvent) { storage.myNum++; txtDisplay.text = storage.myNum.toString(); } |
同樣, Cheat Engine 三次高階搜尋就能找出myNum的值, 不過已經鎖不住myNum了~ : D
小弟亦以2bytes 及4bytes低階搜尋測試, 前者結果一樣, 後者五十多個怪怪的result, 改不了
有朋友或者會問, AS2 呢??
這個很有趣
我把profile 調成ActionScript2 FlashPlayer 8
並以下面的code 測試
var myNum:Number = 0; var txtDisplay:TextField = this.createTextField("txtDisplay", 0,0,0,0,0); txtDisplay.autoSize = true; txtDisplay.text = myNum.toString(); btn.onRelease = function(){ myNum++; txtDisplay.text = myNum.toString(); } |
因為AS2對數字只有Number可用, 是個浮點數 , 故小弟還測試過以Float truncated搜尋, 結果一樣都是搜尋不到myNum
若然各位高手有破解之法或更好的預防方法, 還望賜教
沒有留言 :
張貼留言