A. 怎樣查看一個軟體的源代碼
對於現在的軟體來說,源代碼是最基礎的部分,得到了源代碼也就幾乎得到了軟體的全部。源代碼對於商業性質的軟體來說是極其重要的,一旦泄露就會造成非常大的損失,所以源代碼是一個軟體開發團隊的最高機密。
正因如此,很多人出於不同目的,會想辦法得到軟體的源代碼,但是我們知道,軟體的最終產品一般是已經編譯過的文件,就像我們初學C語言時生成的 exe 文件一樣,是一些二進制符,不能直接查看源碼。
想要查看一個軟體的源代碼,首先要確定這個軟體的開發者是否已經將其開源,如果開源的話就不必大費周章地去反編譯了,直接去開源社區里就會發現該軟體的源碼,開發者一般也會提供源碼的下載鏈接。
如果軟體不開源,那就要進行反編譯了,查看大多數軟體的源碼都需要用到這個方法,即使反編譯了,看到的源代碼也是非常混亂的,因為為了保護源碼,開發者在編譯前都會進行混淆,目的就是即使有人反編譯成功,也無法看懂代碼里的邏輯,這也是保護源碼的最後一道防線。
B. keil如何快速找到代碼
高級查找
步驟一:首先工程編譯選項中要選擇如圖一:【Browse Infomation】選項,即瀏覽信息。
全編譯工程至沒有錯誤,這一點很重要,如果有嚴重的錯誤,則可能沒有編譯完,即一般的查找可能不會查到整個工程文件的內容,選成搜索的信息不全或是沒有。
圖一:設置編譯選項
步驟二:如圖二,雙擊需要查找的內容選中後,點擊右鍵,選擇查找項:
這里為簡單的查找方式,方便與快速。可以查找到相關的定義及調用情況,在哪個文件里。這里必須是全編譯通過的工程源碼。
圖二:選中並右鍵查找。
步驟三:如圖三,部分匯編函數的變數或是函數名無法找到。有時查不到,怎麼辦呢?繼續以下的方法。
圖三:簡單的查找沒有找到相關項。
步驟四:如圖四,選中後,通過Edit->Find in files..高級查找功能。這里要點就是設置搜索篩選的條件及文件范圍,如是否精確查找或是只要部分包含等選項。
圖四:打開高級查找功能:工程文件內容搜索。
步驟五:設置文件搜索的選項,尤其是工程文件夾,默認有可能不是整個工程文件夾。這里點擊瀏覽選擇整個工程文件。
圖五:設置搜索選項。
步驟六:保證搜索文件范圍為整個工程文件主目錄。選擇後,即可進行搜索了查找了。
圖六:選擇文件主目錄。
步驟七:點擊查找後,查看搜索到的信息。查看搜索到的結果,有可能很多,可以重新查找並修改查找選項等。
圖七:文件搜索到的信息。
步驟八:雙擊並定位查看指定的搜索信息。雙擊即可定位並查看查找的結果。
圖八:定位並查看指定的搜索信息。
有時需要對工程源碼進行從頭到尾的學習與消化,因此,查找功能還是比較有用的。從而讓變數定義或是函數定義等無處藏身。雖然步驟很多,其實很簡單。
最重要的,學習在於積累,有些技術的東西,就要多動手,然後再舉一返三,熟能生巧。
張世爭
微信公眾號
嵌入式開發技術經驗分享
打開CSDN,閱讀體驗更佳
keil c51 關鍵字_行知zzz的博客_c51擴展關鍵字
keil c51 關鍵字 一:KeilCx51擴展的關鍵字: •at•alien •bdata •bit •code •compac •data •far •idata •interrupt •large •pdata •priority•reentrant...
繼續訪問
KeilC51基本關鍵字_dylan_zhouhailiang的博客_c51關鍵字
KeilC51基本關鍵字 一、由ANSI標準定義的共32個: auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof ...
繼續訪問
keil編輯環境下_「搜索」功能窗口中_Bookmark All命令的便捷之處
在keil編輯環境下,有時候調用一個函數,這個函數有執行的前提條件,比如要執行函數體內容得滿足:if (cmdArrived) 條件; 可是變數:cmdArrived在哪裡定義的? 在哪個函數里變數:cmdArrived滿足條件,要怎麼找比較快呢。 ctrl + F 打開搜索框,輸入「cmdArrived」,再點擊「Bookmark All」命令,所有的「cmdArrived」調用行全部使用了書簽,這樣就比較好著了; keil編輯環境工具欄搜索框輸入cmdArrived,點擊右邊搜索命令,再點擊「Book
繼續訪問
Keil 查找功能的使用
keil中如何查找和替換以及一個工程里所有文件所包含查找和替換的內容: 1、點擊 edit-find或者快捷鍵 ctrl+f; 2、在look in中 選擇current document就是查找或替換本文件的內容, 選擇current project就是查找或替換整個工程的包含的內容 ...
繼續訪問
MDK keiluvision Volatile關鍵字的用法_點點墨的博客
MDK keiluvision Volatile關鍵字的用法 在定義變數時,變數前面加volatile修飾,作用是防止相關變數被優化。 例如對外部寄存器的讀寫。對有些外部設備的寄存器來說,讀寫操作可能都會引發一定硬體操作,但是如果不加volatile,編譯器會把這些...
繼續訪問
Keil中的code關鍵字_weixin_30823001的博客
Keil中的code關鍵字 一般說來,我們在C語言中定義的每一個變數初始化後都會佔用一定的內存(RAM)空間。但是在keil中提供了一個特殊的關鍵字「code」,這個關鍵字在標准C中是沒有的。其語法舉例如下:...
繼續訪問
keil C51 中的庫函數
非常有用的keil c51 庫函數文檔,受益匪淺,
Keil C51 V9.00/uVision 4基礎
<br /> <br />Keil C51 V9.00 即09年發布的最新版本uVision 4,版本外觀改變比較大<br />可以使用以前的注冊文件<br />如果全新安裝,在VISTA或者WIN 7系統下,請使用管理員方式運行,然後注冊即可無限制運行<br />注冊方法:<br /> 1. 安裝Keil C51 V9.00版本,即uV4<br /> 2. 打開uVision4,點擊File---License Management...,打開License Management窗口,復制右上
繼續訪問
解決Keil 搜索關鍵字時不能跳轉到所在位置的問題
問題:KEIL搜索結果不能跳轉的問題分析過程:最近遇到一個問題:在keil5.1中ctrl+shift+s全局搜索,雙擊搜索結果後無法跳轉。重裝軟體,換版本,修復電腦我都試了,都沒用。最後發現,原先的程序可以跳轉,而後來修改的不行。相同的工程在相同的目錄下為什麼一個可以一個不行呢?發現唯一的區別就是兩個工程文件夾名稱不同,由於修改過的版本我在工程文件名附加了 「(0922)」,我把括弧去掉後就可以...
繼續訪問
keil5尋找自定義函數的位置
keil中想快速的找到自定義函數的位置,如下所示: 想找到CAN定義的函數位置: 第一步:先對程序進行build(第一步非常重要,如果不build,就不能用後面的快捷鍵與go to!!!) 第二步:可以游標放到函數的位置右擊,然後點擊go to definition…或者按F12 ...
繼續訪問
KEIL5 全局搜索關鍵字功能用不了的解決辦法(CTRL+F)
CTRL+F跳出搜索界面 點擊Find in Files 項目卡,選擇Current Project即可。
繼續訪問
STM32F4工程--KEIL--搜索關鍵字
STM32F4工程--KEIL--搜索關鍵字 在.C文件或.H文件中搜索一個關鍵字 方法: ctrl+F 輸入關鍵字即可查詢 (問題解決,如果對大佬您有幫助的話,給小丁個贊唄,謝謝大佬)
繼續訪問
最新發布 如何通過KEIL查看所定義函數入口在內存的地址
如何通過KEIL查看所定義函數入口在內存的地址
繼續訪問
Keil軟體開啟「查找變數定義」功能方法
在使用Keil軟體編寫程序時,有可能將程序的變數定義和使用放在了不同的位置, 有時候想要查看變數的定義,可以使用Keil軟體的查找功能。 1、使用Find功能一個個查找變數,在Keil界面輸入 Ctrl+F,彈出查找界面。 將要查找的內容輸入[Find what]查找框,[Look in]框選擇"Current Document",然後點擊"Find Next"就可以在當前文件一...
繼續訪問
Keil使用技巧及常見問題
文章目錄Keil的使用快捷鍵Keil中使用Ctrl+Shift+F:在多個文件中搜索變數/函數(Find in files) Keil的使用快捷鍵 Keil中使用Ctrl+Shift+F:在多個文件中搜索變數/函數(Find in files) 搜索條件 說明 Find what 輸入要搜索的關鍵字 指定要搜索的文件類型 指定要搜索的文件夾/工程 搜索屬性...
繼續訪問
keil的主要功能和作用_keil進階教程
前言keil只懂得創建軟體工程是遠遠不夠的,如果要想順心使用,應該要懂得部分配置,這樣使用心情順暢,碼代碼也會越發高效。設置字型大小字體點擊編輯菜單,會出現很多子目錄,找到配置,點擊進入設置頁面。看到上方的子欄目,去選擇colors,進入新界面,單片機用C語言編寫·,那就點擊編輯c文件,右邊會出現字型大小,字體,字色設置,按照個人需求自行設置。改正錯誤有時候各種因素會出現編程錯誤,但自行又找不到錯誤在何處...
繼續訪問
KEIL5全局搜索,在find in files框內雙擊搜索內容,不能跳到相應位置
文件名包含了()括弧,去掉就可以了。
繼續訪問
熱門推薦 keil編程關鍵字沒有彩色,找不到Keyword和 C++files解決辦法
打開顏色設置,如果沒有C/C++ Editor files 你就無法修改你的代碼界面關鍵字顏色。 這種情況,很有可能是你的Keil安裝目錄下含有中文路徑(一般國外專業軟體我都放在D盤第一目錄下的新建英文文件夾(Softwares)中,養成文件夾存放的好習慣,日後無論是安裝還是找路徑都會方便許多。),將你的Keil安裝文件整個拖到英文目錄下,或者修改目錄名為英文。 接下來重啟軟體,就可以設置關鍵字了。 注意:修改前關閉keil,如果文件名無法修改,說明當前有文件里的東西正在運行。需關閉」修改目錄「所在文件里的
繼續訪問
Keil代碼整體偏移和查找功能
選中要偏移的代碼,然後按TAB鍵,所有被選中的代碼就會向後偏移TAB,TAB等於多少個空格,可以在「Edit」-「Editor」-「C/C++ Files」下面設置。 如果要返回,則選中目標代碼,按Shift+TAB就行了。 Keil的查找功能
繼續訪問
Keil如何查看函數或變數調用---非Ctrl F
今天公司新人問我,Keil這個編譯器怎麼查看一個函數都在哪裡被調用?我脫口而出 辣雞軟體只能用Ctrl F慢慢找。。要麼你就先用SourceInsight編輯代碼,改好了再去編譯吧。 好好的編譯器怎麼會沒有這個最基本的功能呀?? 想著這個問題,於是就有了今天的意外之喜。 操作方法如下: 在View中調出SourceBrowser這個窗口,將需要查找定義及調用位置的 函數、變數、宏等復制到Symbol處,回車 你就可以看到Definitions&References了,雙擊可以跳轉到對應的代碼位置。這
繼續訪問
keil查找函數引用的方法
1.快捷鍵ctrl+f 2在Find in Files中填要找的,Find all. 3.ojbk
繼續訪問
如何在KEIL裡面搜索一個函數名或者字元串
使用Ctrl + F 會出現如下彈窗,這個就是一個搜索窗口。 這個彈窗的搜索內容會和你之前選中的字元串一樣,同時可以選擇在一個文件下找,也可以選擇查找那個文件含有這個字元串 查找含有某一個字元串的文件 ...
繼續訪問
實驗一 單片機 繪制原理圖
實驗一 2.2繪制原理圖 1.首先在開始菜單欄裡面輸入「ISIS」打開軟體; 2.1)單擊元器件列表窗口上邊的按鈕P,彈出圖2.1所示元器件選擇窗口; 圖2.1 2)在該窗口左上方的關鍵字文本框內輸入8051,在窗口右上方的欄中將顯示出80C51圖形符號,同時顯示該器件的虛擬模擬模型VSM DLL model(MCS8051.DLL)如圖2.2; 圖2.2 3) 用滑鼠從器件選擇窗口中選中需要的器件,單機確定按鈕後,選擇的器件將出現在預覽窗口中如圖2.3; 圖2.3 4)將滑鼠指向編輯窗口並單
繼續訪問
keil查找關鍵字
Keil
C. 怎樣查看和修改軟體的源代碼
exe文件信息一般不能直接更改,因為是編譯好的,並且一般都加了殼。
想改的話,得用脫殼了吧。不同的文件有可能用了不同的軟體加了殼。
用各類脫殼工具測試並脫殼後,再反編譯,有可能得到相關文件信息並更改。
(一)殼的概念
作者編好軟體後,編譯成exe可執行文件。 1.有一些版權信息需要保護起來,不想讓別人隨便改動,如作者的姓名,即為了保護軟體不被破解,通常都是採用加殼來進行保護。 2.需要把程序搞的小一點,從而方便使用。於是,需要用到一些軟體,它們能將exe可執行文件壓縮, 3.在黑客界給木馬等軟體加殼脫殼以躲避殺毒軟體。實現上述功能,這些軟體稱為加殼軟體。
(二)加殼軟體最常見的加殼軟體ASPACK ,UPX,PEcompact 不常用的加殼軟體WWPACK32;PE-PACK ;PETITE NEOLITE
(三)偵測殼和軟體所用編寫語言的軟體,因為脫殼之前要查他的殼的類型。 1.偵測殼的軟體fileinfo.exe 簡稱fi.exe(偵測殼的能力極強) 2.偵測殼和軟體所用編寫語言的軟體language.exe(兩個功能合為一體,很棒) 推薦language2000中文版(專門檢測加殼類型) 3.軟體常用編寫語言Delphi,VisualBasic(VB)---最難破,VisualC(VC)
(四)脫殼軟體。 軟體加殼是作者寫完軟體後,為了保護自己的代碼或維護軟體產權等利益所常用到的手段。目前有很多加殼工具,當然有盾,自然就有矛,只要我們收集全常用脫殼工具,那就不怕他加殼了。軟體脫殼有手動脫和自動脫殼之分,下面我們先介紹自動脫殼,因為手動脫殼需要運用匯編語言,要跟蹤斷點等,不適合初學者,但我們在後邊將稍作介紹。
加殼一般屬於軟體加密,現在越來越多的軟體經過壓縮處理,給漢化帶來許多不便,軟體漢化愛好者也不得不學習掌握這種技能。現在脫殼一般分手動和自動兩種,手動就是用TRW2000、TR、SOFTICE等調試工具對付,對脫殼者有一定水平要求,涉及到很多匯編語言和軟體調試方面的知識。而自動就是用專門的脫殼工具來脫,最常用某種壓縮軟體都有他人寫的反壓縮工具對應,有些壓縮工具自身能解壓,如UPX;有些不提供這功能,如:ASPACK,就需要UNASPACK對付,好處是簡單,缺點是版本更新了就沒用了。另外脫殼就是用專門的脫殼工具來對付,最流行的是PROCDUMP v1.62 ,可對付目前各種壓縮軟體的壓縮檔。在這里介紹的是一些通用的方法和工具,希望對大家有幫助。我們知道文件的加密方式,就可以使用不同的工具、不同的方法進行脫殼。下面是我們常常會碰到的加殼方式及簡單的脫殼措施,供大家參考: 脫殼的基本原則就是單步跟蹤,只能往前,不能往後。脫殼的一般流程是:查殼->尋找OEP->Dump->修復 找OEP的一般思路如下: 先看殼是加密殼還是壓縮殼,壓縮殼相對來說容易些,一般是沒有異常,找到對應的popad後就能到入口,跳到入口的方式一般為。 我們知道文件被一些壓縮加殼軟體加密,下一步我們就要分析加密軟體的名稱、版本。因為不同軟體甚至不同版本加的殼,脫殼處理的方法都不相同。
常用脫殼工具: 1、文件分析工具(偵測殼的類型):Fi,GetTyp,peid,pe-scan, 2、OEP入口查找工具:SoftICE,TRW,ollydbg,loader,peid 3、mp工具:IceDump,TRW,PEditor,ProcDump32,LordPE 4、PE文件編輯工具PEditor,ProcDump32,LordPE 5、重建Import Table工具:ImportREC,ReVirgin 6、ASProtect脫殼專用工具:Caspr(ASPr V1.1-V1.2有效),Rad(只對ASPr V1.1有效),loader,peid(1)Aspack: 用的最多,但只要用UNASPACK或PEDUMP32脫殼就行了 (2)ASProtect+aspack:次之,國外的軟體多用它加殼,脫殼時需要用到SOFTICE+ICEDUMP,需要一定的專業知識,但最新版現在暫時沒有辦法。 (3)Upx: 可以用UPX本身來脫殼,但要注意版本是否一致,用-D 參數 (4)Armadill: 可以用SOFTICE+ICEDUMP脫殼,比較煩 (5)Dbpe: 國內比較好的加密軟體,新版本暫時不能脫,但可以破解 (6)NeoLite: 可以用自己來脫殼 (7)Pcguard: 可以用SOFTICE+ICEDUMP+FROGICE來脫殼 (8)Pecompat: 用SOFTICE配合PEDUMP32來脫殼,但不要專業知識 (9)Petite: 有一部分的老版本可以用PEDUMP32直接脫殼,新版本脫殼時需要用到SOFTICE+ICEDUMP,需要一定的專業知識 (10)WWpack32: 和PECOMPACT一樣其實有一部分的老版本可以用PEDUMP32直接脫殼,不過有時候資源無法修改,也就無法漢化,所以最好還是用SOFTICE配合 PEDUMP32脫殼 我們通常都會使用Procmp32這個通用脫殼軟體,它是一個強大的脫殼軟體,他可以解開絕大部分的加密外殼,還有腳本功能可以使用腳本輕松解開特定外殼的加密文件。另外很多時候我們要用到exe可執行文件編輯軟體ultraedit。我們可以下載它的漢化注冊版本,它的注冊機可從網上搜到。ultraedit打開一個中文軟體,若加殼,許多漢字不能被認出 ultraedit打開一個中文軟體,若未加殼或已經脫殼,許多漢字能被認出 ultraedit可用來檢驗殼是否脫掉,以後它的用處還很多,請熟練掌握例如,可用它的替換功能替換作者的姓名為你的姓名注意位元組必須相等,兩個漢字替兩個,三個替三個,不足處在ultraedit編輯器左邊用00補。
常見的殼脫法:
(一)aspack殼 脫殼可用unaspack或caspr 1.unaspack ,使用方法類似lanuage,傻瓜式軟體,運行後選取待脫殼的軟體即可. 缺點:只能脫aspack早些時候版本的殼,不能脫高版本的殼 2.caspr第一種:待脫殼的軟體(如aa.exe)和caspr.exe位於同一目錄下,執行windows起始菜單的運行,鍵入 caspr aa.exe脫殼後的文件為aa.ex_,刪掉原來的aa.exe,將aa.ex_改名為aa.exe即可。使用方法類似fi 優點:可以脫aspack任何版本的殼,脫殼能力極強缺點:Dos界面。第二種:將aa.exe的圖標拖到caspr.exe的圖標上***若已偵測出是aspack殼,用unaspack脫殼出錯,說明是aspack高版本的殼,用caspr脫即可。 (二)upx殼 脫殼可用upx待脫殼的軟體(如aa.exe)和upx.exe位於同一目錄下,執行windows起始菜單的運行,鍵入upx -d aa.exe (三)PEcompact殼 脫殼用unpecompact 使用方法類似lanuage傻瓜式軟體,運行後選取待脫殼的軟體即可 (四)procmp 萬能脫殼但不精,一般不要用 使用方法:運行後,先指定殼的名稱,再選定欲脫殼軟體,確定即可脫殼後的文件大於原文件由於脫殼軟體很成熟,手動脫殼一般用不到。
三、壓縮與脫殼
現在脫殼一般分手動和自動兩種,手動就是用TRW2000、TR、SOFTICE等調試工具對付,對脫殼者有一定水平要求。而自動就稍好些,用專門的脫殼工具來脫,最常用某種壓縮軟體都有他人寫的反壓縮工具對應,有些壓縮工具自身能解壓,如UPX;有些不提供這功能,如:ASPACK,就需要UNASPACK對付。很多文件使用了一些壓縮加殼軟體加密過,這就需要對文件進行解壓脫殼處理後,才能漢化。這種壓縮與我們平時接觸的壓縮工具如winzip,winrar等壓縮不同,winzip和winrar等壓縮後的文件不能直接執行,而這種 EXE 壓縮軟體,EXE文件壓縮後,仍可以運行。這種壓縮工具把文件壓縮後,會在文件開頭一部分,加了一段解壓代碼。執行時該文件時,該代碼先執行解壓還原文件,不過這些都是在內存中完成的,由於微機速度快,我們基本感覺不出有什麼不同。這樣的程序很多,如 The bat,Acdsee,Winxfile等等。
要脫殼就應先了解常用壓縮工具有哪些,這樣知己知彼,如今越來越多的軟體商喜歡用壓縮方式發行自己的產品,如The bat!用UPX壓縮,ACDSEE3.0用ASPACK壓縮等。它有以下因素:一是:微機性能越來越好,執行過程中解壓使人感覺不出來,用戶能接受(給軟體加殼,類似WINZIP 的效果,只不過這個加殼壓縮之後的文件,可以獨立運行,解壓過程完全隱蔽,都在內存中完成。解壓原理,是加殼工具在文件頭里加了一段指令,告訴CPU,怎麼才能解壓自己。現在的CPU都很快,所以這個解壓過程你看不出什麼異常。因為軟體一下子就打開了,只有你機器配置非常差,才會感覺到不加殼和加殼後的軟體運行速度的差別。)。 二是:壓縮後軟體體積縮小,便於網路傳輸。三是:增加破解的難度。首先,加殼軟體不同於一般的winzip,winrar等壓縮軟體.它是壓縮exe可執行文件的,壓縮後的文件可以直接運行.而winzip,winrar等壓縮軟體可壓縮任何文件,但壓縮後不能直接運行。很多站點不允許上傳可執行文件,而只能上傳壓縮的文件,一方面處於速度考慮,也是為了安全性考慮。用加殼軟體壓縮的文件就是體積縮小,別的性質沒改變。還是EXE文件,仍可執行,只是運行過程和以前不一樣了。壓縮工具把文件壓縮後,在文件開頭一部分,加了一段解壓代碼。執行時該文件時,該代碼先執行解壓還原文件,不過這些都是在內存中完成的,由於微機速度快,我們基本感覺不出有什麼不同。
D. keil怎樣看編譯產生的匯編代碼
在成功編譯的前提下,按Ctrl+F5,或依次點擊菜單欄的「Debug」>>「Start/StopDebugSession」,切換到調試界面。
調試界面下,依次點擊菜單欄的「View」>>「DisassemblyWindow」,即可打開反匯編窗口,其中包含有混排的源代碼以及編譯生成的匯編代碼,如圖所示。
注意經過優化後,源代碼與匯編代碼並不一定一致。