type
status
date
slug
summary
tags
category
icon
password
📝 本周周报
这周干的事情以及学习的进度
- 重新搭建一个新的博客和评论系统
- 这周学习了PE文件结构中的头文件(如IMAGE_DOS_HEADER,IMAGE_NT_HEADER,IMAGE_FILE_HEADER,IMAGE_SECTION_HEADER),导出表和导入表以及重定位表
- 简单学习了一下clamAV(主要是从题目中学习)
- 打了DASCTF-暑期挑战赛
新的博客
新的博客就是以notionnext为框架搭建的,以及就是Twikoo评论系统的搭建,解决不用GitHub登录也能评论的问题
以下是新搭建的博客
以及搭建评论系统的过程
首先说明一下为什么搭建一个新博客,这个博客是基于notionnext搭建的,它可以和notion同步起来,对我这种记笔记很多又需要上传的人还是很方便的
PE文件结构的学习
我觉得这一张图可以概括所有
在学习PE文件结构中最大的乐趣就是在家在WinHex里面看十六进制的数据然后找到所对应的属性
…
还写了很多关于PE解析的东西
但是目前自己只能在控制台运行它,等自己学了MFC写一个简单的PE解析器
具体的笔记在这里(导出表和导入表的笔记还没有)
clamAV的学习
题目是使用clamav自带的clamav-bytecode-compiler生成的一种.cbc字节码签名文件,下面是官方的介绍,其实通俗的来讲就是使用他的compiler将c函数编译成他的汇编再到字节码,字节码以一种ASCII的形式保存。
阅读官方文档可以知道,clamav支持将字节码反汇编,就是printbcir,它可以将字节码反汇编成类似于IR汇编的形式
当时在做这道题的时候选择了用解释器的方法,其实这种方法很耗时,用的就是SECCON CTF2022的一位师傅的文章
但是其实最好的办法应该是去读源码看功能
我们可以在官方的github里的bytecode.c找到所有关于处理cbc文件字节的函数
以下是cli_bytevalue_describe函数,我们发现它不会打印全局变量
我们找到parseGlobals函数,发现它处理的就是Global段,G就代表着globals
我们使用010查看文件,就可以看到全局变量段的内容,然后在分析函数发现他会先读段头,然后使用readnumber读maxglobal与numglobal,然后再根据numglobal的值去使用readConstant所以现在的两个重点就是readConstant以及readnumber
分析readnumber,将传入的buf的第一个字节作为长度,最长为0x10,然后将后面所有的长度之内的字节的后四位合并,返回。只处理大于0x60的字节。
了解这些功能之后我们去分析global的功能就行了
DASCTF-暑期挑战赛
DosSnake
16位dos小程序
放进IDA里面分析
这里为主要分析,其实就只进行了一个异或,DASCTF为密钥
exp
Strangeprograme
假的flag,根据经验是hook了memecmp
我们从start函数里面找
然后我们在这里转化成数组
我们逐步去分析这些函数
主要关注sub_411BB0函数中的sub_411555函数
这里就是hookcmp的地方
解密.DASCTF段
重新命名的函数
中间有个反调试给他干掉
下面是在遍历IAT获取
memcmp
的地址就是一直tea加密密文的前八位,然后后面的对其进行异或
exp
BabyAndroid
jadx启动,通过字符串定位到关键方法
主要加密逻辑:首先loadData加载了
assets/Sex.jpg
,然后动态加载dex,先调用native方法sendInit
加密,然后反射调用dex里的encrypt
方法进行二次加密我们可以找到加密的地方
先分析dex加载部分,使用rc4解密文件
由于自己还没学java,只能把代码给抄下来
我们对这个data进行解密,用厨子跑一下
我们发现是这样的数据,发现在native层里面还要这个sendinit
笔者先用JNItrace跑了一下,发现加密结果跟上图解出来的一模一样
就在这个encrypt里面
这段代码是一个加密函数,使用了DCT(离散余弦变换)进行处理
我们只需将我们上面解出来的数据进行逆离散余弦变换就行
exp
学习中遇到的问题以及迷惑
这周学PE的时候没有太多迷惑的地方,有一个问题是我现在要不要学一些java,现在安卓逆向的题大多时候都是依靠ai,但是有些大比赛可能就行不通了
以及我目前要不要专门去学一下那些壳(UPX壳,AsPack壳之类的)
🤗 总结归纳以及下周想做的事情
这周还是非常有收获的,感觉对PE结构了解更深了
下周想学一点win32API以及MFC,学习完MFC后想自己写个PE解释器再添加一些别的功能
下周正好也学一下反调试,正好下个月也要给学员讲反调试
下个学期想研究一下UPX的源码
📎 参考文章
有关学习和复现上的问题,欢迎您在底部评论区留言,一起交流~
- Author:5m10v3
- URL:https://5m10v3.top/article/ef476b1b-24cb-4931-903a-a438e305891c
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!