1625-5 王子昂 总结《2017年6月28日》 【连续第269天总结】
A. 今天折腾了一天查壳和脱壳软件
脱壳在论坛上发现了使用IDA动态调试的教程,准备用adb跟着的时候发现模拟器是x86架构的,而IDA提供的android_server是arm指令集的,手头又没真机OTZ遂再等两天吧
惊喜的发现了一个查壳的工具ApkDetecter:https://github.com/Andy10101/ApkDetecter
之前苦于WP都是直接一眼看出来该dex被加壳了的,而自己刚开始并没有看出来,虽然IDA的函数挺奇怪的,遍布j_j_之类的函数头,但是由于没有经验所以不敢笃定。因此需要一个像PEiD一样查壳的工具来帮忙
这个工具有点老,需要py2+pyqt4的环境下使用,原作者只提供了源代码却没有给编译好exe……
我自己的环境是py3+pyqt5…虽然有py2但是pyqt4会冲突所以无法安装上
然而我还是耗了好几个小时在装sip--pyqt4的支持组件上OTZ
由于以前学C++用的是Code:Blocks所以一直没下VS,之前在PYQT5用webengine的时候已经吃过一次苦头了:WebEngine引擎只有VS里才自带,MingW是没有的,导致我无法自行尝试,只能等到小伙伴来做。这次pyqt4官方只找到了源代码,需要自己使用python configure.py来配置,然后调用nmake install来安装。然而nmake是VS里提供的命令行工具……直接去百度了一个exe发现果然还是不行,花式报错。查了一会儿估计是运行库缺失啥的
所以说VS这个东西应该说必须下的…微软官方提供的运行库其他很多地方都必不可少啊…
环境适配失败,就想着能不能把源码改成Py3+PyQt5的代码,将print和字符串的编码之类的地方修了一下,然后报一个错修一下……最后由于py3的包匹配机制GG了,明明子目录里就有文件然而就是报找不到模块……
环境改造和文件改造都失败了,就想到拖到Kali虚拟机里操作,因为kali自带Python所以可以省点事儿
安装sip和pyqt4又废了好久的事,所幸没什么大碍终于安装好了
import PyQt4没报错简直让我兴奋
然后运行github上拖下来的源码,终于让我看到界面的样子了
兴奋的点击打开,然后就又报错了…………
找不到目录,找不到Dex文件……里面出现了C:\APK的字样,估计是源代码里写的历史目录,由于linux的文件结构不同导致创建失败这样。于是跑到源代码里找到临时目录的字符串,改成\root\APK。再运行,接着报错
这次是由于Tools文件夹里的7z.exe执行失败。也对,linux无法运行exe文件的。虽然用wine可以运行exe,但是在工具中调用没啥思路。于是pip找了个linux版本的7z,将源代码里的7z.exe改成7za命令。然后还是报在临时文件中找不到文件。去看了一眼Tools文件夹,发现里面还有DexDump等好几个exe格式的辅助工具,这我可不确定还有没有Linux版本的了…
想把它编译成exe文件,百度上一堆说linux可以用pyinstaller将py转成exe的,仔细查了一下发现底层运行库的不同导致linux里没有windows的一些库,所以不可能编译出exe文件的。失败
既然linux虚拟机不行,我还有上次脱壳装的xp虚拟机呢
重新安装py2.7,然后装VC++6来提供nmake,在安装sip的时候nmake仍然疯狂报错……不过比之前少了,只有大概三五个函数连接失败,估计是VC6太老了,提供不了VS的新的动态运行库的内容。
所幸,找到了Pyqt4的安装包,安装成功
然后运行,打开一个dex文件,报之前同样的错:7z cannot open file as archive
查百度也发现类似的内容,百思不得其解
最后突然灵光一现,7z解压工具不应该是对dex作用的啊,apk才是一个压缩包来着
遂拖入apk打开,终于成功
用两个已知的apk验证,一个未知壳,一个未加壳,都符合成功,满足
另外下午看了一个i春秋的CTF二进制的学习路线,笔记记录于此:
Hacking三步
理解系统
系统性的基础课程学习,深入理解计算机系统运作机制
破坏系统
学习与创造漏洞挖掘与利用技巧
重构系统
设计与构建系统防护
基础课程
核心基础课程-工作原理
体系结构
编译原理
操作系统
其他基础课程-开发基础
编程语言
网络协议
算法与数据结构
体系结构:
CPU
机器指令与汇编
机器的解码、执行
内存管理
推荐课程:CMU 18-447,大作业为使用Verilog语言实现MIPS CPU
编译器
自动机、词法分析、语法分析
运行时
程序静态分析
推荐课程:Stanford CS143 Compilers,大作业为从0学做Cool语言的编译器
操作系统
系统的加载与引导
用户态与内核态、系统调用、中断和驱动
进程与内存管理、文件系统
虚拟机
推荐课程:MIT 6.828,实验:实现一个操作系统
目标
网络协议的实现
HTTP/SMB/DNS/UPnP Server
脚本引擎
JavaScript
ActionScript
PHP/Java Sandbox Escape
内核
Linux/Android
Freebsd
Apple iOS
Sony PS4
转型:
学习历史漏洞-CVEs
挖掘新漏洞:
逆向分析+代码审计
快速逆向与快速理解
对漏洞的感觉
【换位思考,猜测如果自己来写,可能出错的地方】
模糊测试
测试框架
样例生成的想法
构建系统防护:
漏洞自动挖掘技术
静态程序分析
符号执行
机器学习?
漏洞利用防护机制
Intel SGX
控制流完整性CFI
拟态?
C. 明日计划
i春秋CTF教程学习