Posted by: TARONO on: October 21, 2008
See the Ranking board
這個對程式語言做排行榜的網站, 是採用自動化去mining搜尋引擎上的資料,來計算每種程式語言的popular程度. 計算公式在這裡, 對於每個搜尋引擎給的權重都相同, 並採取人工filter掉誤判的資訊(false positive). Java/C/C++/PHP 仍然還是廣受討論的語言呀~
Posted by: TARONO on: October 20, 2008
Web site: http://www.autoitscript.com/autoit3/index.shtml
不錯用的script language, 可以用來自動化一些繁複的按鍵動作.
也內建簡單可以做出GUI的函數~ so wonderful :)
安裝後, help file 裡有完整的教學 ~ 真的是太用心了 XD
Posted by: TARONO on: October 19, 2008
http://delphi.about.com/od/objectpascalide/l/blvkc.htm
Simulate keystrokes
http://blog.chinaunix.net/u/15586/showart_124641.html
sleep function
#include <ctime>
void sleep(unsigned int mseconds)
{
clock_t goal = mseconds + clock();
while (goal > clock());
}
Posted by: TARONO on: October 16, 2008
好用的快捷鍵:
F2: break point
F8: step over function
F7: step into function
F4: 運行到滑鼠停止的指令上 (EIP will be changed)
F9: 執行程式
CTRL + F9 : 執行到遇到 RETN
斷點的使用思維:
在某個指令上設立斷點, 即是讓程式執行到此為止即停止.
在斷點之前的運作, 我們可以掌握.
而斷點之後的運作, 我們沒把握掌握的很清楚, 因此我們要一步步來除錯,
這時用 F7 or F8 一步一步執行指令來看 register 的改變來找出我們想要知道的東西即可
Posted by: TARONO on: October 15, 2008
常用的 general registers: EAX, EBX, ECX, EDX (32 bits, 4 bytes)
loop 專用的 register: ECX
Registers細分範例 EAX(4 bytes)=>AX(2 bytes)=>AH:AL (1bytes: 1bytes)
CPU execution cycle: fetch, decode, fetch operand, execute, write back
instruction CALL的步驟: save call的下面一個指令之address到stack, 接著change EIP(instruction pointer, save目前程式所執行到的指令address)到我們要call的procedure之address.
RET指令所做的事情, pop return address 給 EIP
procedure接收參數的方式, 可以用regisrers(受register數量限制), 或是利用stack(不受數量限制).
程式執行時, 均會配置data, code, stack區塊
常用指令: add, sub, mov, inc, dec, xor, or, [...]
Posted by: TARONO on: October 15, 2008
修改概念:
先用 CE 找出要修改的關鍵 instruction,接著把這條關鍵指令, 改成我們想要執行的指令 (通常是改opcode, 例如把 JZ 改成 JNZ )
然而如果每次玩遊戲, 都要執行CE, 然後再去找關鍵指令, 接著再做修改, 實在太費力氣, 如此繁複的工作, 可以自己寫程式來完成.
首先我們得先要知道要修改的執行指令所對應的記憶體內容與位置,然後分別把它們紀錄下來.
接著寫程式去取得遊戲執行時的memory,然後把關鍵要修改的地方寫入即可, 下為對Trickster Online進行修改的範例