大家周一好,還在上學的小夥伴們期末考試考完了嗎?期末考試考完了學習計劃就完了嗎?我知道你不會的,你的心裡只有學習沒有女朋友。書山有路勤為徑,代碼沒寫完不行。還在上班的夥伴們離過年還有整整一個月,放假還早,時間不少,冬天外面冷,呆在室內寫寫代碼,看看項目,何樂而不為呢?(滑稽表情)

本周開源周報流行開源項目榜中榜前十名項目有 x64dbg 給 Windows 系統的開源調試器,反編譯apk的 JADX,反編譯 Java 的 Byte-code viewer,彙編工具 asm-dude,可以說是反編譯器扎堆了,前一陣子 Intel 處理器(後來證實 AMD 、ARM、NVIDIA等處理器部分也有)爆出來的 meltdown 等漏洞把大家折騰得慘烈無比,全球用戶一片哀嚎,不過很快就有跟它有關的開源項目啦,並且熱度不減;而關注前端的朋友,可以看看厲害的 Nerv庫,它提供了與React 16一致的使用方式與API,並且擁有更高的性能表現、更小的包大小以及更好的瀏覽器兼容性。

本周流行開源項目榜中榜開源趨勢 Top 10

0. x64dbg

一個為32位和64位 windows 系統準備的開源調試器

這個調試器在打開程序和程序啟動的入口處都設置了斷點,從而可以讓使用者觀察程序的狀態,比如 CPU 的地址及其地址的內容;內存的地址,大小,頁面信息,內容,類型等等等等。幾乎可以讓使用者在運行程序的同時完全的監視這個程序,還可以通過在程序中設置斷點來進一步觀察運行狀態。

開源周報2018年第3期:反編譯器上榜扎堆,JS庫 Nerv 顯神威

特點:

1.可以全功能的調試 dll 和 exe 文件

2.附帶跳轉箭頭的 IDA 側邊欄和 IDA 指令標記筆

3.可動態識別模塊與字元串

4.快速的反彙編程序

5.擁有用於注釋,標籤等功能的用戶資料庫

6.支持插件

7.擁有可擴展,可調試的腳本語言,便於自動化

1. JADX

 開源周報2018年第3期:反編譯器上榜扎堆,JS庫 Nerv 顯神威

簡介:一個能夠反編譯二進位和APK文件的開源軟體,同時擁有GUI和命令行兩種操作方式。

用法:

Windows下:來到build/jadx/bin目錄下,雙擊jadx-gui.bat,然後選擇要反編譯的apk即可。

命令行:把apk拷貝到bin目錄下,命令行cd到bin目錄下:鍵入jadx -d out xxx.apk會把編譯後的源碼丟到out目錄下。

開源周報2018年第3期:反編譯器上榜扎堆,JS庫 Nerv 顯神威優勢:
  1. 相比於傳統的安卓反彙編方式(apktool+dex2jar+jd-gui)更加集成化。
  2. 可以直接導出項目源代碼為Gradle項目,方便使用 Android Studio 再次開發。

2.workerize

開源周報2018年第3期:反編譯器上榜扎堆,JS庫 Nerv 顯神威

workerize 能將模塊移動到 Web Worker 中,自動將導出的函數反應為非同步代理

特點:

  • 將一個小型的專門構建的RPC實現捆綁到您的應用程序中
  • 如果導出的模塊方法已經是非同步的,那麼簽名是不變的
  • 支持同步和非同步工作者功能
  • 與非同步/等待美妙地工作
  • 只需900位元組的壓縮ES3

用法:

傳遞一個函數或一個包含代碼的字元串

3. Bytecode Viewer

開源周報2018年第3期:反編譯器上榜扎堆,JS庫 Nerv 顯神威

Bytecode-viewer 是一個由五個不同的Java 反編譯器,兩個位元組碼編輯器,一個Java 編譯器,Android APK等組成的工具。

主要特點:

1.  Smali / BakSmali集成 – 可以通過smali編輯類文件/ dex文件。

2.  APK / DEX支持 – 使用Dex2Jar和Jar2Dex,可以輕鬆載入和保存APK。

3. Java反編譯器 – 利用FernFlower,Procyon和CFR進行反編譯。

4. 每個反編譯器/編輯器/查看器都是可切換的,也可以自定義每個窗格上顯示的內容。

 5. 全功能的搜索系統 – 通過字元串,函數,變數等等搜索。

6. 內置的插件系統 – (惡意代碼掃描器,字元串解密器等)

開源周報2018年第3期:反編譯器上榜扎堆,JS庫 Nerv 顯神威

更多信息:https://wiki.bytecode.club/Bytecode_Viewer

社區地址:https://the.bytecode.club/forumdisplay.php?fid=69

關於Bytecode俱樂部:

這是一個專註於逆向工程的社區,他們嘗試以Java / Android為目標,但也包括其他語言/平台。為支持和免費開放源代碼應用感到自豪。

4. Nerv

開源周報2018年第3期:反編譯器上榜扎堆,JS庫 Nerv 顯神威

Nerv是一款基於虛擬DOM技術的JavaScript(TypeScript)庫,它提供了與React 16一致的使用方式與API,並且擁有更高的性能表現、更小的包大小以及更好的瀏覽器兼容性。

特性:

  1. 與React保持一致的API,不需要 nerv-compat
  2. 久經戰鬥洗禮,已經應用於京東PC首頁 與 京東旗下TOPLIFE
  3. 強勁的性能
  4. IE8兼容
  5. 更小尺寸, 9Kb gziped
  6. 支持客戶端與服務端同構渲染
  7. 支持React 16的新特性, 例如錯誤處理, Portals, 自定義DOM屬性等等.

熟悉react框架的人可以直接上手nerv,從React切換成使用Nerv非常方便,只需要將react 和 react-dom 重命名成 nervjs,而不需要任何的代碼變動。

5. Eel

Eel是一個小型的Python(目前僅用於Python3)庫,用於製作簡單的類似Electron的HTML / JS GUI應用程序

它擁有一個本地的網路伺服器,然後讓你用Python聲明函數,以便從Javascript調用它們,反之亦然。

它的設計目的在於編寫短而簡單的GUI應用程序。

開源周報2018年第3期:反編譯器上榜扎堆,JS庫 Nerv 顯神威

Eel不像Electron或Cefpython那樣完全成熟 – 它可能不適合做像Atom這樣全面的應用程序 – 但它非常適合使你自己使用的小實用程序腳本的GUI相當。

6. algorithms_and_data_structures

該項目是一份 c++描述的演算法與數據結構問題的解決方案的集合,當你遇到難題時,來這裡尋找說不定能有意外的收穫。另外,要補充的是,該項目採用的是GNU通用公共許可證,那麼,你能幹嘛不能幹嘛就不必我贅述了吧。

當前分類:

  1. 鏈表問題
  2. Include 部分:提供了一些常用演算法和大部分數據結構的泛型實現
  3. 位操作問題
  4. 《程序員面試金典》中的部分問題
  5. 動態規劃中的一些問題
  6. 關於樹的問題
  7. 字元串問題
  8. 常見的數據結構與邏輯問題
  9. 數學問題
  10. 堆棧問題
  11. 排序與搜索問題
  12. 圖形問題
  13. 貪心演算法問題
  14. LeetCode上的一些問題
開源周報2018年第3期:反編譯器上榜扎堆,JS庫 Nerv 顯神威

7. meltdown

一個新發現的bug,提供了多個演示視頻,演示視頻使用的是Ubuntu 16.04以及Intel i7,但他們應該可以工作在任何基於2010年以後的現代Intel CPU的Linux系統上。為了取得最好的演示效果,最好使用支持Intel TSX的快速CPU

鏈接:

這個庫包含了多個應用程序來展示Meltdown bug. 技術信息參考:https://meltdown.help/meltdown.pdf

操作步驟:

1、對於支持RPM的系統:首先安裝glibc-static

sudo yum install -y glibc-static

演示

1#

首先測試第一個代碼,如果其不工作,則其他的演示也將失敗,原因請參考github網站

make

taskset 0x1 ./test

如果看到以下代碼則表示可以運行

Expect: Welcome to the wonderful world of microarchitectural attacks

Got: Welcome to the wonderful world of microarchitectural attacks

2# 破壞kaslr

輸入:

make

sudo taskset 0x1 ./kaslr

等待幾秒鐘後你將看到

[+] Direct physical map offset: 0xffff880000000000

3#可靠性測試

如果你有KASLR啟用,第一個參數是physical map的偏移量。否則,程序不需要參數。

make

sudo taskset 0x1 ./reliability 0xffff880000000000

等待幾秒鐘後你將看到

[-] Success rate: 99.93% (read 1354 values)

4#讀物理內存

提供了一個可讀的測試工具(secret)

make

sudo ./secret

等待幾秒鐘後你將看到

[+] Secret: If you can read this, this is really bad

[+] Physical address of secret: 0x390fff400

[+] Exit with Ctrl+C if you are done reading the secret

讓secret繼續運行並開始physical_reader,如果你有沒KASLR啟用,第二個參數是physical map的偏移量。否則,程序不需要參數。

taskset 0 x1。 / physical_reader 0 0 xffff880000000000 x390fff400

等待幾秒鐘後你將看到:

[+] Physical address       : 0x390fff400

[+] Physical offset        : 0xffff880000000000

[+] Reading virtual address: 0xffff880390fff400

 

If you can read this, this is really bad

5#轉存內存

首先運行給的測試工具memory_filler,來給內存填充可讀信息。第一個變數是要填充的數量(以千兆位元組為單位)

make

./memory_filler 9

接下來運行工具memdump

執行memory_filler之前,您應該看到一些字元串片段。如果你有Firefox和Chrome運行多個標籤,您還會看到最近點開或關閉的網站。

第一個參數是轉儲應該開始的物理地址。如果你有沒KASLR啟用,第二個參數是physical map的偏移量。

taskset 0x1 ./memdump 0x240000000 0xffff880000000000 # start at 9 GB

你將獲得16進位顯示的一部分內存(可能包含隱私文件)

8. Web Developer Roadmap

開源周報2018年第3期:反編譯器上榜扎堆,JS庫 Nerv 顯神威

作者應一位老教授的要求給老教授的學生做了一份對前景的分析,給迷茫的小朋友們介紹了通向成為一個前端,後台或者是一個DevOps(開發軟體、技術運營和質量保障(QA)三者的交集)的路徑與其對應的技術,以及通向任一方向前應掌握的東西。

開源周報2018年第3期:反編譯器上榜扎堆,JS庫 Nerv 顯神威

作者還打算做一份相關資源的圖表,但還未實施;同時作者很歡迎讀者詢問,並與他一起對這些圖表做出改進

作者製作圖表的工具:https://balsamiq.com/products/

9. TopSup

簡介:使用截圖,文字識別,搜索的小輔助。

使用步驟 (谷歌 Tesseract)

Android

安裝ADB

下載地址:https://adb.clockworkmod.com/ 安裝完後插入安卓設備且安卓已打開 USB 調試模式,終端輸入 adb devices ,顯示設備號則表示成功。我手上的機子是堅果 pro1,第一次不成功,查看設備管理器有嘆號,使用 handshaker 載入驅動後成功,也可以使用豌豆莢之類的試試。

安裝python3

安裝所需python包

命令行:

pip install pytesseract

pip install pillow

pip install requests

安裝谷歌Tesseract

Windows下鏈接: 推薦使用安裝版,在安裝時選擇增加中文簡體語言包

  • 安裝版:

https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-setup-3.05.01.exe

  • 免安裝版:

https://github.com/parrot-office/tesseract/releases/download/3.5.1/tesseract-Win64.zip 免安裝版需要下載中文語言包

其他系統: https://github.com/tesseract-ocr/tesseract/wiki

修改 GetTitleTessAndroid 代碼相應目錄信息(默認安裝則無需修改)

# tesseract 路徑

pytesseract.pytesseract.tesseract_cmd = ‘C:\\Program Files (x86)\\Tesseract-OCR\\tesseract’

# 語言包目錄和參數

tessdata_dir_config = ‘–tessdata-dir “C:\\Program Files (x86)\\Tesseract-OCR\\tessdata” –psm 6’

運行腳本

python GetQuestionTessAndroid.py 會自動識別文字並打開瀏覽器

註: 可以用 GetImgTool.py 調整題目截取位置

可以到

https://github.com/Skyexu/TopSup/blob/master/common/devicesCutConfig.txt

查看部分手機截圖設置 若屏幕解析度不同,請在 ocr.py 中自行修改代碼即可

# 切割題目和選項位置,左上角坐標和右下角坐標,自行測試解析度

question_im = image.crop((50, 350, 1000, 560)) # 堅果 pro1

choices_im = image.crop((75, 535, 990, 1150))

# question = img.crop((75, 315, 1167, 789)) # iPhone 7P

其它

  • Tesseract 參數,若識別有問題可以更改參數解決:

https://github.com/tesseract-ocr/tesseract/blob/master/doc/tesseract.1.asc

  • 三種方法可以選擇,可以加#注釋掉只保留一個方法

10. asm-dude

 

Asm-dude 是一個應用於 Visual Studio 2015/2017 彙編代碼編寫功能以及反編譯功能的輔助工具。他擁有將語法高亮顯示並提供說明(指向、作用),這個功能對x86指令集和x64,SSE、AVX、avx2、Xeon Phi(Knights Corner),最常用的彙編指令的和一些NASM指令提供支持;並支持文檔鏈接的快速跳轉,自動生成部分簡單代碼,對代碼進行摺疊,自動提示參數,標籤校驗等功能。

開源周報2018年第3期:反編譯器上榜扎堆,JS庫 Nerv 顯神威

除此之外,它的2.0版本擁有彙編模擬器功能,模擬器提供Multi-Valued Logics、顯示登記內容、多種錯誤檢查(使用未定義的值,冗餘指令,不可能觸發的邏輯判斷指令,語法錯誤)等功能。

該工具仍在持續更新完善,如果你在使用這個工具時有任何疑問與建議,都可以在github中向作者提出。

好了,本期開源周報到這裡就結束了,歡迎下周同一時間再見。