1. 程序員如何方便的管理自己以前寫的代碼
一、代碼的最大長度。
雖然在Java的編譯器中對於代碼的最大長度沒有硬性的規定。但是如果代碼的長度太長,超過了編譯器的最當行寬,顯然閱讀起來比較麻煩。為此根據筆者的經驗,通常情況下Java源代碼的行長度不應該大於80個字元。如果超過這個長度的話,在一些開發工具和編輯器上就無法很好的顯示。如需要通過滾動條來顯示後面部分的代碼。當其他項目成員閱讀這超長的代碼時,就會看得眼花繚亂。當人的溫飽問題解決了之後,就需要開始注意美觀方面的問題。所以程序開發人員在開發應用程序的時候,要盡量避免書寫長的代碼。如果代碼的每行長度確實需要超過80個字元的話(最好將每行代碼的長度控制在70個字元左右),那麼就需要對代碼進行分行。
二、在恰當的地方對代碼進行分行。
筆者建議將Java源代碼每行的長度控制在70個字元、最大不超過80個字元。當超過這個字元長度的時候,開發人員就需要考慮在恰當的地方對他們進行分行處理。不過這個分行也不是說開發人員想在哪裡進行分行就在哪裡進行分行。這個分行是有一定技巧的。雖然這些技巧大部分並不是強制性的規定,但是都是一些專家們的經驗總結,可以提高代碼的閱讀性。為此筆者希望各位程序開發能夠嚴格的遵守。
技巧一:高層折行優於低層折行。
這個技巧是說,在考慮對代碼進行折行處理的時候,需要注意代碼的層次性。如某段代碼涉及到混合四則運算,而四則運算又有明顯的運算順序,此時對代碼進行折行時就最好能夠在四則運算的關鍵順序上進行折行處理。如現在有如下的一段代碼:
Mynum=mynum1*(mynum1+mynue2+mynum3-mynum4)+8*mynum5
如果要對這段代碼進行折行的話,該在哪個地方加入一個折行符號呢?如果是筆者處理的話,筆者會按如下的格式對代碼進行折行處理。
Mynum=mynum1*(mynum1+mynue2+mynum3-mynum4)+8*mynum5
這主要是根據四則運算的運算層次來進行折行的。顯然,*符號的優先順序要比+符號要高。所以在+號前面對其進行折行處理,那麼就可以一目瞭然的反應出代碼的運算層次。可以大幅度的提高代碼的閱讀性。所以代碼折行的第一個技巧就是高層折行優於低層折行。如此的話,可以使得應用程序的結構代碼更加的清晰,更容易被團隊成員所理解。
技巧二:在運算符前面進行折行處理。
其實在如上的折行技巧中,還隱藏著一個規則,即在運算符之前進行折行。如上例所示,筆者就是在+號前面進行折行,而不是在+號後面進行折行處理。這主要也是考慮到代碼的可讀性。如上面這個例子中,如果在+號後面進行折行處理的話,則下一行就會給人一種憑空多出來的感覺,顯得代碼很不連貫。跟這個規則類似,如果在折行處理的時候遇到逗號時,那麼最好能夠在逗號後面進行折行。如在一個方法中,需要傳入5個參數。此時如果代碼行比較長,那麼就需要在幾個參數之間進行折行處理。此時最理想的折行位置,就是在某個參數的逗號後面。注意,使在逗號後面進行折行,而不是在逗號前面。因為一個參數一個逗號是匹對的。而如果一個逗號加一個參數,則讓人看起來很不舒服。
技巧三:這行代碼的對起方式。
當不得已對代碼進行折行處理時,下一行的代碼應該與其同等級的代碼行左對齊。如上例所示,在+號前面將某一段四則運算公式進行折行處理的時候,其+號符號已經採取縮進處理。其縮進後的效果就是要與其同等級的代碼行左對齊。如此的話,明眼人一看就知道這段代碼採取過折行處理;而且跟上一行代碼的層次關系。當一段代碼被分割成三行甚至跟更多行數的時候,這個規則會非常的有用。如果能夠嚴格遵守這個規則,即使將代碼分割成多行,看起來也不會覺得那麼混亂。反而給人一種比較有層次的感覺。
另外在採取縮進處理的時候,可以利用Tab鍵來提高縮進處理的效率。因為直接按空格的話,有可能空格字元數量不一致,會讓人覺得層次不起,產生比較大的混亂。一般情況下,當代碼行兩側距離頁邊的距離比較大,看其來不怎麼舒服時,可以在代碼行中通過插入TAB鍵(會在代碼行中連續插入8個字元)來提高代碼的閱讀性,讓代碼的縮進實現統一。
技巧四:為變數尋找一個合適的位置。
在編寫應用程序時,盡量將變數聲明放置在一個代碼塊的開始處,也就是說{}花括弧的開始位置。雖然說可以在需要使用變數的時候再對其進行聲明。但是筆者不同義如此操作。因為如果在的呢感到使用變數的時候再來聲明變數時,會降低代碼的可讀性。同理,也需要避免低層聲明與高層聲明重復,這樣會引起代碼混亂並可能引發程序功能性錯誤。而且這種錯誤在後續的排錯中很難被發現。為此要在應用程序開發的時候就要盡量避免這種錯誤。
在聲明變數的時候,有時候可能代碼很簡單,生命變數的行總共加起來也不會超過十個字元。此時能否把多個變數的聲明寫在同一行呢?從就技術上來說,這是可行的。也就是說,Java編譯器允許將多個變數定義在同一行上。但是從閱讀性上來說,這並不是很好的做法。筆者的建議是,即使變數定義再簡單,或者變數比較多,也最好分行進行變數的聲明。也就是說,一行聲明一個變數。這可以提高代碼的可閱讀性。而且有時候往往需要對變數加一個注釋說明變數的用途,如果以行定義一個變數,添加行注釋也相對簡單許多。
總之,以上的這些折行的規則基本上不會影響到代碼的運行。但是,對於代碼的維護與後續的排錯、升級、二次開發等等具有不可忽視的作用。而且現在基本上應用程序開發式團隊開發,故大家都遵守同樣的代碼編寫規范是非常重要的。筆者在開發一個應用程序的時候,事先都會花一定的時間,跟項目成員強調這些折行的規則。目的只有一個,就是提高代碼的可讀性,便於後續代碼的共享與維護。畢竟後續面對這些代碼的,並不是客戶,而是我們自己。我們程序員在編寫代碼的時候,不能夠搬起石頭砸自己的腳。筆者認為,現在一個合格的程序人員,不僅技術功底上要過得硬,而且還必須要遵守這些無形規則的約束。難怪現在這么多企業在挑選程序開發人員的時候,都會註明良好的編碼規范。現在對於這些無形中的條條框框,項目經理已經開始重視起來。
2. 怎麼脫E語言程序的VMP殼
想要脫VMP的殼,首要工作當然是要找一個強OD。至於是什麼版本的OD自己多試驗幾個,網上有很多,一般來說只要載入了你想脫的VMP加殼程序不關閉都可以。
其次,就是StrongOD.dll這個插件了,現在用的比較多的就是海風月影。下載回來後復制到你的OD程序所在的文件夾裡面的plugin里。StrongOD的設置選項搞不懂就全部打鉤。
接下來要做的工作就是搞清楚我們要脫殼的程序編程的語言了,可以用PEID或者fastscanner查看,如果在這里看不到也可以在OD載入以後通過裡面的字元串判斷了。例如VB的程序會出現MSVB----/VC的會出現MSVC---等等。這些都是程序運行所需要的windows鏈接文件。
做完這些預備工作接下來當然是用OD載入文件。文件載入後在反匯編窗口CTRL+G搜索VirtualProtect(注意V跟P要大寫,至於為什麼要搜索這個別問我)。一般來說搜索的結果會出現以下的類似:
7C801AE3 E8 75FFFFFF call kernel32.VirtualProtectEx
我們在這里下F2斷點。然後F9運行到我們下的這個斷點。接下來我們就要注意觀察堆棧窗口了。一般來說當我們F9運行到我們上面下的斷點的時候在堆棧窗口會出現以下類似:
0012F66C 00401000|Address = TradeCen.00401000
0012F670 000280D1|Size = 280D1 (164049.)
0012F674 00000004|NewProtect = PAGE_READWRITE
0012F678 0012FF98pOldProtect = 0012FF98
我們要注意觀察的就是在接下來我們F9運行的時候,ADDRESS和NEWPROTECT這兩行的變化。按F9-速度別太快,直到NewProtect項變為PAGE_READONLY,這時候程序就釋放完畢了。
0012F66C 0042A000|Address = TradeCen.0042A000
0012F670 000069DE|Size = 69DE (27102.)
0012F674 00000002|NewProtect = PAGE_READONLY
0012F678 0012FF98pOldProtect = 0012FF98
現在可以取消剛才我們下的斷點了。接下來就是找OEP了。找OEP的時候我個人的一個經驗就是OEP一般就在接近上面的ADDRESS地址的附近。例如上面的地址是0042A000,我一般就在這個基礎上減到420000搜索程序的特徵段,當然我們也可以直接跳到401000開始搜索。雖然我們搜索的范圍比較大,但是因為我們搜索的是命令序列,所以工作量還不是很大。
CTRL+G--上面的地址,然後CTRL+S 查找命令序列。命令序列的內容就是我們用查到的編程語言的特徵段。我們可以在特徵段裡面選擇兩三句固定不變的命令查找。例如VC++6.0的特徵段是:
0046C07B U>55 push ebp
0046C07C 8BEC mov ebp,esp
0046C07E 6A FF push -1
0046C080 68 18064C00 push UltraSna.004C0618
0046C085 68 F8364700 push UltraSna.004736F8
0046C08A 64:A1 00000000 mov eax,dword ptr fs:[0]
0046C090 50 push eax
0046C091 64:8925 00000000mov dword ptr fs:[0],esp
0046C098 83EC 58 sub esp,58
0046C09B 53 push ebx
0046C09C 56 push esi
0046C09D 57 push edi
我們可以只搜索前三條命令。找到符合前三條命令的,我們在對照接下來的命令。只要命令相符那這個地址八九不離十就是OEP了。如果在ADDRESS地址附近找不到OEP,那就只好用笨辦法,從401000開始找吧。
找到OEP地址後,我們在OEP處點滑鼠右鍵《此處為新EIP》。接下來就可以mp啦。通常選擇OD的mp插件脫殼要好點,用loadpe脫殼後要麼程序不運行要麼乾脆沒脫。用OD的mp插件脫殼的時候,脫殼窗口下面的(重建輸入表)項前面的勾一定要去掉。
3. 有了源代碼之後怎麼完成一個軟體
你問的這個問題太大了,首選源代碼是要有編譯工具來幫助編譯成應用程序的,而應用程序又運行在不同的操作系統上,所以又有不同操作平台下面的編譯系統,舉例來說,VC,VB這系列的語主言編譯出來的程序,可以運行在windows下面,當然windows升級很快,需要學習windows程序設計,而像GCC系列的軟體可以編譯在linux下在運行的程序,至於以前可以編譯的DOS下運行的程序,像TURBO C,有的好像可以在命令提示符下面運行,C語言只是很小一部份,你學聊天室編程如果是windows下,建議學VC,這貨支持互聯網相關的一些API,同時也支持C語言,畢總C++是C的升級嘛。你有源碼看看你源碼是什麼語言,什麼編譯器的。
4. 代碼是怎麼變成軟體的
首先,代碼有很多種 如VB HTML JAVA等。
每一種代碼都有對應的軟體可以編輯程序代碼,有些代碼的編輯功能還被內置在其他軟體內,比如說office的辦公軟體中就集成了VB代碼編輯功能.
使用專用的軟體(非軟體內插件)新建,編輯並保存而生成的文件就是程序,也就是我們常見的.exe可執行文件。
保存的過程中同樣有很多選擇,所以我們安裝軟體的時候才會有直接解壓,向導安裝等不同的方式。
還有一中很獨特的方式也會被認為是種小程序,就是windows自帶的批處理模式,你可以使用記事本寫如一些語句然後在保存的時候使用另存為並且更改後綴名為.bat即可,我在附件中上傳一個文本文檔,你可以另存為試下(WIN7垃圾清理)。