想入門者請近.[翻譯]what programming language should I learn?

看雪資料發表於2004-08-15

原文:(來自Reverse-Engineering-Community)

If youre wanting to learn cracking, you must understand fundamental concepts of programming,
 and machine architecture, and possess a good working knowledge of the operating system youre 
working with. If you dont have all three, chances are youre not really going to progress much. 
If you have some programming experience, then this generally helps, depending on the language.
 But many newbies decide they want to instantly become crackers without any programming 
experience. Do yourself a favour, and learn how to program first  

I am often asked by people, what is the best programming language to learn ? The answer to 
this is never clear cut, as it depends on what your ultimate aims are. A good knowledge of
 Assembly language is a great help in reversing, but many people are able to crack well without
 necessarily being able to program in assembly. As long as you can fully understand the flow 
and effects of the instructions, this is often enough. 

Additionally, you might want to consider learning a higher level language such as C. The web
 is infested with programming tutorials, do a web search. Also, Borland (http://www.borland.com) 
produce a free C compiler (http://www.borland.com/bcppbuilder/freecompiler/). LCC is another
 alternative which I use personally. Knowing C will allow you to quickly produce keygens, patches
 and any other tools you need to complete a crack, although a good assembly coder is able to produce 
these in about the same time scale. 
Knowing a language like C will also aid you in studying disassembly. Various compilers produce
 different object code, and you can often tell what compiler was used, just by studying the
 generated opcodes. Although this is less of an issue as you can use IDA flirt recognition to
 identify the compiler too. 

High level languages such as Visual Basic are not really much of a benefit to your cracking
 adventures. Although you can produce equivalent tools in VB, if youre writing a complex keygen, 
and its not quite write, you lose the ability somehwat to study the disassembly to see where exactly 
its going wrong. 

So to summarise, if youre not technically minded, learn C, otherwise immerse yourself in assembly language.
 But then if youre not technically minded, why are you even wanting to become a cracker ? 

譯文:
   如果你想學習crack,你必須懂得程式設計的基本原理,體系結構,並且掌握你所用的作業系統的工作原理。如果你不具有以上三點,你不可能進行得很深入。如果你具有一些程式設計的經驗,是非常有幫助的。但是一些新手並沒有程式設計的經驗,卻想迅速成為crackers。還是首先學習程式設計吧。。。
    別人經常問到我,該學什麼程式語言。這個回答並不固定,它取決於你最終的目標。良好的彙編知識對於reversing是非常有幫助的,但是一些人可以不會彙編程式設計而進行crack。只要你完全理解程式流程和指令的意義,就足夠了。
    此外,你應該考慮學習一門高階語言,比如:C。有許多程式設計指南的站點,可以搜尋一下。Borland(http://www.borland.com) 開發了一個自由的C編譯器(http://www.borland.com/bcppbuilder/freecompiler/),LCC也是我經常用到的另一個編譯器。掌握C可以讓你很快的寫出序號產生器、打補丁而瞭解其它你需要的工具就可以完成crack了,儘管一名優秀的彙編程式設計師在相同的時間內可以完成這些工作。
    瞭解C語言也可以幫助你學校組合語言。不同的編譯器產生不同的目的碼,你可以透過對產生的操作碼的學習,而知道用的是哪種編譯器。儘管你也可以透過IDA來確定。
    高階語言,比如VB,對於你的crack之旅並沒有太多的益處,儘管可以用VB寫出相同的工具,但對於一個複雜的序號產生器,用VB並不好寫,你失去了學習反彙編的能力,而學習反彙編可以讓你看到發生了錯誤的準確位置。
    綜上所述,如果你沒有技術頭腦,學習C,否則,學習組合語言,但是,如果沒有技術頭腦,為什麼要成為一個cracker呢?

(翻譯的可能有點生硬,請指教).

相關文章