俺發現這裡有很多人不懂彙編,居然也在學破解。
俺認為,不懂彙編的人永遠只能是菜鳥!
也許你認為不懂彙編也能夠從暫存器或堆疊中找到註冊碼,可是用
註冊碼 = f(使用者名稱或機器碼) 演算法的軟體肯定會越來越少,而用
f(註冊碼,使用者名稱或機器碼) 演算法會成為主流,應用程式本身將不
再含序號產生器功能,真正的註冊碼也永遠不會在暫存器或記憶體**現,
你上哪找去?
也許你認為找不到註冊碼還可以爆破,但是你找到爆破點的依據不
是靠理解了程式的演算法,而是根據程式在完成註冊子過程中提供的
各種操作提示資訊,但是程式可以在完成註冊子過程之外任意可能
的地方重新驗證註冊碼而且不做任何提示就取消註冊標誌,你將連
這些重新驗證的地方都找不到?怎麼爆破?事實上程式可以有無數
種方法讓得不到真正註冊碼的爆破者失去註冊資格,這樣爆破最終
還是死路一條!
所以,破解學習的正道還是要研究演算法,要能夠讀懂彙編**,最
終要能夠自主製作序號產生器。
俺學破解也只有乙個星期的時間,俺也不懂彙編,但是俺懂c++,
了解程式設計的原理,所以能夠很快大致地理解彙編,僅僅知道彙編指
令的含義是不夠的,這裡將我對彙編的一些理解羅列如下:
1、關於函式呼叫,在分析彙編**時總是要遇到無數的call,對
於這些call,盡量要根據call之前傳遞的引數和call的返回值
來判斷call的功能,特別當呼叫的是系統函式時,不要見call
就跟,在call之前所做的所有push動作以及對暫存器的操作都
可能是在給函式傳遞引數,而函式的返回值十有**在 eax裡
面,因為程式絕大多數都使用高階語言開發,而幾乎所有的高
級語言編譯器都預設將函式的返回值存放到eax。
2、關於堆疊,善於使用 esp會收到事半功倍的效果,在乙個演算法
中,任何可能使用的常量、變數和函式位址都必然在當前 esp
中留下蛛絲馬跡,由於變數是以位址的形勢進行儲存的,所以
建議經常使用dd esp指令來觀察堆疊內容,注意在彙編**中
凡是[esp+******xx]都代表著堆疊中的第******xx個房間住的
那個房客。
3、關於變數的賦值,能否了解到對變數的賦值過程在演算法研究中
是非常重要的。由於變數是用位址訪問的,,因此對形如
mov [aaa],bbb
的**要高度關注,它通常是修改變數(位址為aaa,或aaa為
暫存器時位址為aaa的值)的值為bbb(bbb為暫存器時取bbb的
值)。4、另外,彙編中會有很多特定的結構與高階語言中的語句相對應,
如最簡單的
001 cmp aaa,bbb
002 jnz 00n
003 ...
...00n ...
相當於if(aaa==bbb)
001 mov esi 00000000
002 mov ebx 0000000a
003 ...
00k inc esicmp esi ebx
00l cmp esi ebx
00m jl 003
00n ...
相當於for(int i=0;i<10;i++)
001 mov edi 00000004
002 and eax 00000003
003 jmp [eax+edi]
004 ...
005 ...
006 ...
007 ...
相當於switch(eax%4)
等等,這些結構都必須熟悉。
說到底,俺自己也是菜鳥乙個,遇到了麻煩,在這裡等高手解答,閒來無
事,就灌一篇激勵各位菜鳥朋友上進吧!
我對JS的看法
很多人說js是後媽養的,它被生父拋棄了,所以它散漫不拘,各種奇葩 我倒覺得只是它的思考方式與常人不同罷了,就如同舞蹈,民族舞,交際舞等規規矩矩的按著節奏,噠噠噠,噠噠噠.體操,變化多,但也有規可循,轉體,跳躍,翻轉.而街舞,自由自在的,只要看著舒服,跳著也舒服就行,它可以很自由,可以很鬆散,或許有時...
我對HGAME的看法(GalGame)
是hgame 想玩hgame 就說嘛 http zhidao.baidu.com question 32649871.html?si 4 正是那種很不良的事件,我的美麗天使本來就是日本遊戲公司studio e.go 的hgame my fair angel 後來經國人漢化放出,應該是有個去h的全 年...
我對HGAME的看法(GalGame)
是hgame 想玩hgame 就說嘛 正是那種很不良的事件,我的美麗天使本來就是日本遊戲公司studio e.go 的hgame my fair angel 後來經國人漢化放出,應該是有個去h的全 年齡版和個 的。h都是指那種 不良 的事,關於h意思的來歷說法很多,一般認為來自日語發音。好孩子要避開...