易语言html规则分析,易语言算法原理浅析【一】(示例代码)
注:
如果你看完了下面的文章。就來試試這個KeyGenMe吧,相信你能有所收獲。
一、文章開頭首先我們要貼上一段易語言代碼,并且編譯這段代碼,從匯編角度分析易語言程序編譯后,易語言算法在匯編中的實現過程。
.版本 2
.程序集 窗口程序集_啟動窗口
.子程序 _按鈕1_被單擊
.局部變量 變量1, 整數型
.局部變量 變量2, 整數型
.局部變量 變量3, 整數型
變量2 = 1
變量3 = 2
變量1 = 變量2 + 變量3
為了便于理解,所有的變量我都用中文代替,當點擊按鈕后,創建三個局部變量,分別是變量1,變量2,變量3
變量2=1,變量3=2 ?最后計算 變量2+變量3 的值,將計算結果給變量1
二、我們編譯此代碼,生成為exe文件,編譯方式采用靜態編譯,編譯后的文件名為ReverseMe.exe
三、重頭戲開始了,我們將ReverseMe.exe載入OllyDbg中,通過按鈕事件FF 55 FC 5F 5E 定位到我們關鍵子程序位置
四、上面最后一張圖就是我們關鍵函數的位置,除去函數頭和函數尾,我們可以看出,核心代碼如下。
五、通過上面的圖可以看到一大堆fild fstp fld fild fadd之類的指令。很明顯我們可以推測出,易語言程序就算是最簡單的加減乘除,被編譯后,匯編中都是采用浮點方式計算的。
下面我們對每句代碼加上注釋,便于理解。
注:下面兩點是需要知道的小知識
1.OD中長得像[local.x]的指令,代表的就是易語言中的局部變量
2.fild,fstp等浮點指令,操作的都是浮點堆棧,也就是OD寄存器窗口中的ST0----ST7
六、通過上面的分析,我們看出,僅僅一個整數加法,易語言編譯后在匯編干了這么大一堆事情,其實對于Cracker來說,很多匯編代碼都是無用的。
下面我們將剛才的分析精簡。今后看到此類浮點運算,就能秒識別他在干什么了。
注:下面兩點是需要知道的小知識
1.看到此類浮點計算。找fild,有幾個fild就有幾個操作數,上面有兩個fild,所以該代碼操作數為[local.1]和[local.2],也就是變量1和變量2
2.找完fild,找運算指令,排除掉一切堆棧操作指令。就僅剩fadd,這個運算指令,也就是加法指令。
綜上所述:
PS:今后看到這樣的大段代碼,是不是就不會懵逼了呢?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的易语言html规则分析,易语言算法原理浅析【一】(示例代码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#线程篇---Task(任务)和线程池
- 下一篇: 基于LVS对LAMP做负载均衡集群