x_96_dbg介绍(24)
X96_dbg简介及基本操作由于od 只能 调试32位的。所以对于64位的就不好操作了。
自然就有x96DBG出来了,分为X32 和 X64 22两种
用法基本和OD一样
Ctrl+F9: 执行到函数返回处,用于跳出函数实现
Alt+F9:执行到用户代码,用于快速跳出系统函数
Ctrl+G:输入十六进制地址,快速定位到该地址处
实战一下也就是一个猜数字游戏,只要一次猜对就可以得到flag
很简单
有2种方法,第一种就是直接改flag寄存器,控制跳转。
还有一个就是,它的判断跳转语句 直接改成 jmp + “猜对了”
BUU-reverse_2(3)
这道题和【reverse_1】的思路是一样的,找到flag的位置,看代码有一点不同就是,下下来的时候是没有后缀的,需要人为的给上.exe的后缀
然后去看flag,把里面的 i和r变成1就好了1flag{hack1ng_fo1_fun}
OD实战训练分析解密算法(23)
本题来自Buuctf 中的 crackMe。
小张从网上下载到一个黑客软件,然而开发者并不打算共享,所以小张注册了一个用户名叫welcomebeijing,但是密码需要进行逆向计算,请求出密码,进行MD5的32位小写哈希,进行提交。
下载下来。运行一下。
由于题目中说了“一个用户名叫welcomebeijing”,但是不知道密码,但是知道“密码需要进行逆向计算,请求出密码,进行MD5的32位小写哈希”
无壳..放入IDA中看看咯
刚刚放进去
就看到这个come one !感觉地方已经找到了。
这里v6就是账号,v7是密码。
【这里有一个memset函数】虽然感觉分析它用处不大,但毕竟是为了学习,何乐而不为呢?
C 库函数 void *memset(void *str, int c, size_t n) 复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符。
123456789101112131415#include <stdio.h>#include <string.h> int main (){ ...
OD反调试:过程序调式保护技术(22)
反调试首先可以看这个文章,肯定比我讲得好。
https://bbs.kanxue.com/thread-225740.htm
我下面写的东西,也是转载的啦。【方便以后自己找和看】
反调试技术,恶意代码用它识别是否被调试,或者让调试器失效。恶意代码编写者意识到分析人员经常使用调试器来观察恶意代码的操作,因此他们使用反调试技术尽可能地延长恶意代码的分析时间。为了阻止调试器的分析,当恶意代码意识到自己被调试时,它们可能改变正常的执行路径或者修改自身程序让自己崩溃,从而增加调试时间和复杂度。很多种反调试技术可以达到反调试效果。这里介绍当前常用的几种反调试技术,同时也会介绍一些逃避反调试的技巧。
反调试主要就是函数在操作【包括微软未公开的函数】
IsDebuggerPresentIsDebuggerPresent查询进程环境块【PEB】中的IsDebugged标志。如果进程没有运行在调试器中,函数返回0;如果调试附加了进程,函数返回一个非0值。
1234BOOL CheckDebug(){return IsDebuggerPresent();}
CheckRemoteDe ...
OD介绍和基本操作(21)
OD介绍和基本的操作一个动态调试的反汇编工具
这个是打开后的样子,上面有选型,下边有几个不同作用的窗口。我们尝试把一个文件放进去看看。
首先是上面的地方,有文件,插件….
下面有一个【暂停】字样,这个来看程序是运行的还是暂停的,然后右边有2个黑色的三角形是重新加载程序,X是退出。
红色的三角形是运行程序,后面带有箭头和好几个点的是运行程序,每一个意思不一样,单步运行啊,单步步过啊。。。啥的
后面一串洋文的东西,就是一系列窗口,说不明白,还得自己多尝试
中间是汇编的主要的窗口,右边是寄存器窗口,左下是数据的窗口,在主窗口和数据窗口中还有一个小的窗口,右下是栈窗口。
上面那个插件蛮好用的。
蛮多的。
功能不介绍【主要我也不知道】
我知道一个API断点设置工具
主要就是对于不同的API函数进行设置断点的工具。
主要还是得靠实际操作。
去除花指令花指令就是恶心别人。加一些没用的东西。
可以用OD中的插件去除啦。
找到含有花指令函数的头部,然后选中它,点击插件里面的DeJunk 就可以去掉了
脱壳之:ESP定律去除OEP啥是OEP?
这里实战一下啦
可以看到,这个程序有一 ...
BUU-reverse_1(2)
首先我们下载这个.exe下载之后用ida打开,在这之前其实需要脱壳【不懂】反正就是用ida×64打开
这里他提示说:有一个相关的pdb文件,是否要上传其实没有 ,所以点否。也可以点是,反正就是没有罢了
打开过后就是这样,emmm毫无头绪,怎么办呢?没有思路肯定就是要去所有的东西啦【shift+F12】【也可以在视图-打开子视图-字串】里面找到哦
我们肯定是要找flag啦,这里有三个…….【我也是小白也不懂,先打开这个wrong flag 】看看吧
这说明这个 wrong flag 这个字符串是存放在内存中的,emmm这里就去看看谁引用了这个wrong flag吧【这里是用的“交叉引用” 右键-点击 或者用ctrl+x】
打开过后是这样的一个东西【这样的一看就是汇编啦】所以我们就用 Tab 键 来看伪代码咯 【F5】它有一个提示:反正就会说可能会有误差啥的..不管他
打开就是这样的,读一读咯【这里很类似于C语言】然后就是大概的看 里面有printf还有scanf还有if语句,if语句就是说把111【ascii】转化成48【axcii】然后就是正确的flag去查看字 ...
BUU-easyre(1)
就是用ida打开后查看
一下就看到了flag …
IDA linux下的反编译命令-objdump(20)
objdump objdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。
obj是目标文件的意思
Linux环境下对obj对象文件的分析。其中主要涉及到objdump、ar以及nm三个工具
https://ivanzz1001.github.io/records/post/linux/2018/04/09/linux-objdump#1-objdump%E5%91%BD%E4%BB%A4
可以参考上面这个文章啦
【最近了解到[Binary_Ninja] 这个“二进制忍者” 工具 有时间找一找玩一玩】
可以使用man查看objdump命令的反汇编功能:
1man objdump
在输入 man objdump
多的一批,
…. 具体可以去看上面那篇文章啦,中文,还是详细的嘞【好想copy过来】
语法:1objdump [参数] [文件]
常用的参数说明
-f 显示文件头信息
-D 反汇编所有section (-d反汇编特定section)
-h 显示目标文件各个section的头部摘要信 ...
IDA 二进制分析框架-radare2(19)
radare 2 介绍有了IDA为什么还要学这个radare2呢?我也不是很懂啦,都是使用工具。可能这个确实比较good啦。
radare 2 是一个开源的。可以在github上找到哦
至于为什么要学它。可以看看
https://zhuanlan.zhihu.com/p/348481864
https://www.cnblogs.com/pannengzhi/p/play-with-radare2.html
或者自己百度啦。我这里只是随便列举出来了几个罢了。
介绍:首先 radare2 是一个逆向开源的逆向工具和二进制分析框架。包括反汇编、分析数据、打补丁、比较数据、搜索、替换、虚拟化等等
当然,我们的kali以及自带了radare2。
radare2工程是由于一系列的组件构成的,这些组件可以在radare2界面或者单独被使用-比如:rabin2,rahash2,radiff2,rafind2,ragg2,rarun2,rax2,radare2。
其中的主要介绍,可以看:
https://xz.aliyun.com/t/7265#toc-6
在实战中学习用的 megabeet ...
binwalk工具
对固件分析的一个工具https://blog.csdn.net/weixin_44932880/article/details/112478699
https://blog.csdn.net/wxh0000mm/article/details/85683661
1.学一个工具肯定要会看它的帮助的文档啦
1binwalk -h 或 binwalk --help
【每次看这个玩意的时候,我都好像把洋文学牛皮。或者说多认识点单词】
2.固件分析扫描
12binwalk 固件比如:binwalk 1.jpg
3.提取文件
-e 按照预定义的配置文件中的提取方法,从固件中提取探测到的文件以及系统
1binwalk -e 1.jpg
-d 用于限制递归提取的深度,默认深度为8,仅当“-M”选项存在的时候有效
1binwalk -Me -d 5 1.jpg