type
status
date
slug
summary
tags
category
icon
password
👉
暑假第二周的学习

STL练习题

前面是STL的初始化,vector里面的值是v20里面的值
notion image
第一步先进行了map操作
notion image
notion image
这里就是对经过map操作后vector容器里面的值取出来进行操作,其实就是高低位变换然后取反
notion image
notion image
最后就是比较,取v17这个容器和v18进行比较
notion image
思路梳理完了接下来就是写脚本

Capstone引擎的学习

这里拿一道最近刚做的DownUnderCTF 2024作为学习
首先capstone是一个反汇编引擎
notion image
我这里随便找了一段代码,它主要实现的是反汇编

DownUnderCTF 2024-jmp_flag

notion image
我们看最后的判断,sub_1200的返回值要为真
notion image
qword_9010的值要为0
notion image
其实就是将你传入的值作为参数,(your_input[i])*128)+0x60,然后将基址+(处理的值)赋值为rax,然后跳转rax的值,有很多个函数就是对qword_9010内存处的值进行处理
notion image
有好多函数都是对qword_9010内存处的值赋值为-1,我们要做的是让qword_9010处的值不要为-1
notion image
但是函数太多了,而且这里的函数都是我手动修复,我们不可能手动把值都复制出来
首先我们要获取的东西是啥,我们要获取的是&操作的值,capstone的好处就是可以遍历所有函数,同时我们还可以提取里面的值,最后进行一个爆破操作
notion image

后记

其实一直想用idapython实现自动化,那天看杭电的一个师傅的博客,说他们队里面有个idapython大师,到时候取试一下这个思路

学习进度

这周主要学习了C++的面向对象和STL,C++反汇编的体现,以及capstone引擎
C++的学习进度: 学了面向对象和STL,目前只学了一些常见的STL,例如string,vector,list,map,C++的内存管理、对象模型还没有去了解
关于STL的运用,其实自己也找了一道题作为自己的检验,但是这道题明显是STL最基础的用法
同时也参考这个师傅的文章进行了学习
同时也学习了如何用idapython dumpSTL容器的内存

std::string内存布局

IDA dump脚本

std::map内存布局

IDA dump脚本

std::vector内存布局

IDA dump脚本

遇到的问题

C++面向对象

其实C++面向对象里面我觉得刚开始接触最难懂的地方是虚函数,就是不太懂它的运行机制,我觉得自己可能还是需要从堆栈的角度去理解一下

做题遇到的问题

就是这两天做的HITCONCTF 2024,里面有一道叫做antivirus的题目
notion image
里面给了两个文件 print_flag.cbcrun.sh, print_flag.cbc为反病毒的签名
run.sh里面的内容起到的作用是就是扫描这个exe是否符合这个签名
notion image
然后我们找到clamav
notion image
这个字节码有1000多行,我们肯定不能纯逆
找到一个师傅博客里面是SECCONCTF2022 一道题的考法跟这个一模一样,但是那个师傅写了个解释器,我们把它的那个解释器拿过来改一下
后面主要遇到的问题是解析出了LLVM的代码,然后不知道如何下手了
其实也想系统的去了解一下LLVM,但是一直不知道从哪开始下手,现在遇到LLVM的题要不就是用插件,要不就是傻傻的动调
 
💡
有关Notion安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
Relate Posts
关于NotionNext评论系统的搭建(Twikoo)C/C++逆向学习(二)
Loading...
5m10v3
5m10v3
目前主攻方向为Re
Announcement
🎉5m10v3のBlog已经上线啦🎉
-- 感谢各位师傅的支持 ---
👏欢迎师傅们前来交流👏