Ghidra工具的介绍和使用(18)
Ghira其实我觉得和IDA 差不多吧
下载地址:
https://Ghidra-sre.org
需要又java 11+ 【我用的是java 11】
主要就不介绍了,用法感觉和IDA 差不多
我们先来写一个题【CTF】
该题来自 Bugku逆向 RE_Cirno
打开发现是一个.jpg的图片 。 图片肯定有问题啦。藏得有东西
用101打开看看
通过http://doc.chacuo.net/filehead 这个网址就能找到一些文件头的都行。然后再010里面可以搜索一下。
其实这一步也可以省略啦。直接用工具binwalk来查看这个JPG图片
很明显的看到,里面不只有这个jpg 还有一个zip的样子。
用binwalk -e 的命令把他搞出来。 就得到一个exe文件。
1binwalk -e RE_Cirno.jpg
ok 现在就是再这个exe文件里面找到flag就好了
拿到文件。首先运行一下啦
从这里就可以看到
:琪露诺酱在冻青蛙的路上,突然被9层栅栏反方向围住了,找不到方向,你可以帮助她找到路吗?:请按任意键继续. . .
首先分析一下:“请按任意 ...
IDA Pro之IDA python介绍和功能(17)
IDA-IDC脚本编写语法搞得我想买一本IDA Pro 权威指南来看看了……【有机会就整来看一看】
这个IDC用的比较少吧。下面的有些例子也不能正确的使用…
可以通过下面这个网址找到更多的IDC脚本
https://www.cnblogs.com/LyShark/p/13100048.html
file -> scriptcommand
file -> script file
由于这里汉化了,就比较容易了…
也许是这个用的少吧。笔记就不写了,反正也是copy也没有意义,就不浪费时间了。
IDA PythonIDC 能做到的 IDApython 也能做到,所以我们直接学IDApython 吧。
IDAPython 由三个独立的模块组成,一个是idc , 它是封装IDA的IDC函数的兼容性模块,第二个模块是idautils,这是IDA里的一个高级实用功能模块;第三个模块是idaapi,它允许访问更加底层的数据。
首先 , 我们知道我这个IDA7.7是基于这个python 3.8.10的版本..
要用pyhton 3 的语法 而不是 pyhton 2的语法
123是 p ...
IDA Pro逆向训练(16)
IDA Pro之xrefs的巧妙运用数据交叉引用首先我们要知道的xrefs其实的就是交叉引用
也即是CTRL+X就可以了
它会列出一些信息,如上。
流程图视图——流程图
打开
就是一个类似于这样的图
函数调用IDA提供了一项分析函数间依存关系(交叉参考)的功能。
可以看到上面图中,根据函数地址的属性,被区分为不同的颜色(如程序入口点,外部函数,库函数……),颜色规则与反汇编窗口中的分析结果有关。
IDA Pro 逆向训练
第一题首先打开
这个软件说:注册失败.
现在就是要把这个软件注册成功。
先查看发现是Win32 然后用IDA打开
然后上面这个窗口的地方有:Registeration。【Registeration == 登记】
所以我们就去找含有这个字符串的地方
用之前学的搜索的功能对它进行搜索。
点过去,看一下伪代码。【F5或者TAB】
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 ...
静态分析工具——IDA Pro介绍和功能介绍(15)
工欲善其事必先利其器~
IDA Pro 介绍这有啥介绍的呢?
总的来说,就是很强大。
这里来说说打开和退出吧。
主要是这个有汉化版本,就很容易理解啦。
IDA Pro之主要窗口
1.上边有一个工具栏
通过右键可以开启或者关闭某些功能
2.导航带 (Overview navigator)
以线性方式显示了当前加载文件的地址信息。
3.标签栏(Tabs)
提供了当前已经打开子窗口标签
IDA View-A(反汇编窗口一如果打开多个反汇编窗口会以此为 IDA View-B, IDA View-C.)、 Hex View一A(十六进制窗口一同IDA view 窗口一样打开多个窗口会以此按字母序号命名)、Structures(结构体窗口)、Enums(枚举窗口)、Imports(输人表窗口),Exports(输出表窗口)。如果需要其他参考信息可以通过荣单 “View 一 Open Subviews”功能打开新的参考窗口。
4.消息窗口(又叫做日志 窗口 Message Window)
这个窗口如果是关着的。可以用alt+0。来开启
IDA Pro之导航功能导航目标在分析阶段,IDA 会通过 ...
查壳工具的使用(14)
查壳⼯具的运⽤PEiD用的少
exeinfo很不错啦【在win10的虚拟机里面】安装了最新版本。
用法就是直接打开就好了。把想要的文件拖进去
Die这个可能是最good的
安全补丁分析之Bindiff经过我多次尝试。tmd 汉化版的ida和bindiff不能一起用。妈的
安装就不说了。累死我了。居然汉化版本IDA不
基础工具讲解(13)
Winhex 和 010Editorwinhex功能介绍:想看的看
1234567891011121314151617可以对硬盘、软盘、CD-ROM、DVD、ZIP及各种存储卡进⾏编辑⽀持FAT、NTFS、Ext2/3、ReiserFS、Reiser4、UFS、CDFS、UDF等⽂件系统可⽀持重组RAID及动态磁盘附带数据恢复功能可以访问物理内存及虚拟内存内置数据解释器,可以识别解释20种数据类型可以⽤数据结构模板查看、编辑结构数据可以分割与合并⽂件可以对⽂件进⾏分析与对⽐具有灵活的搜索和替换功能可以对磁盘进⾏克隆可对磁盘进⾏压缩镜像备份,⽀持对备份⽂件进⾏分卷处理具有编程接⼝,⽀持脚本操作⽀持256位加密、校验和、CRC32、hash(MD5,SHA-1)计算⽀持对磁盘进⾏数据安全销毁包含ANSI ASCII, IBM ASCII, EBCDIC, Unicode字符集⽀持⽂件⼤⼩超过4GB
1.标记位置首先用鼠标,把要选中的位置索引住。然后按下 Ctrl+I/导航–>标记位置
跳转到标记处:Ctrl+K/导航–>转到标记。
2.位置管理器也就是对某个特定的值,进行搜索 ...
MFC的程序编写和安全分析(12)
MFC(Microsoft Foundation Classes)是微软基础类库的简称,是微软公司实现的一个c++类库,主要封装了大部分的windows API函数
MFC的事件和消息事件
举一个例子:猎⼈在⼭中布置了⼀个陷阱,⼀头野猪掉进陷阱中了。这⾥的“野猪掉进陷阱”就是⼀个事件,但是这个事件发⽣时,猎⼈并不⼀定知道(猎⼈不可能⼀直盯着某个陷阱);如果猎⼈想要在猎物掉⼊陷阱中时⻢上知道,该这么做呢?在陷阱上布置⼀个铃铛,当猎物掉⼊陷阱时,铃铛响。猎⼈知道后就可以做出相应的处理了这⾥的“铃铛响”就是⼀个消息
事件会触发消息
事件发送了,不一定有消息
有消息传来,一般肯定有事件发送
消息:是被动的!你要自己安排时间去取出来看或检测
控件事件:是主动的!当发生时会执行其对应的函数
关于MFC下的控件的事件和属性CButton
事件:
12BCN_HOTITEMCHANGE 当⿏标进⼊或离开此按钮空间区域时发⽣该事件
CListCtrl
事件:
123456789101112131415161718192021222324252627282930NM_CLICK ⽤户单击列表时发送此消息 ...
Win32汇编讲解下(11)
1.句柄句柄就是个数字,⼀般和当前系统下的整数的位数⼀样,⽐如32bit系统下就是4个字节。
这个数字是⼀个对象的唯⼀标示,和对象⼀⼀对应
这个对象可以是⼀个块内存,⼀个资源,或者⼀个服务的context(如 socket,thread)等等
指针其实也是⼀种”句柄”,只是由于指针同时拥有更特殊的含义——实实在在地对应内存⾥地⼀个地址
在进程的地址空间中设⼀张表,表⾥头专⻔保存⼀些编号和由这个编号对应⼀个地址,⽽由那个地址去引⽤实际的对象,这个编号跟那个地址在数值上没有任何规律性的联系,纯粹是个映射⽽已。
在windows这个编号就是“句柄”
为什么不用首地址呢?
暴露了内核对象本身,使得程序(⽽不是操作系统内核)也可以任意地修改对象地内部状态,这显然是操作系统内核所不允许的
操作系统有定期整理内存的责任,如果⼀些内存整理过⼀次后,对象被搬⾛了怎么办?
看一个例子
123456789101112131415161718192021#include <Windows.h> #include <stdio.h> #include <string.h> ...
Win32汇编讲解上(10)
1.Win32 API介绍这个内容在win 32汇编里面有。这个API就是函数。
这些API函数是封装起来的,在动态链接库中,对于API函数的调用就需要加载动态链接库【.dll】
API函数是开发win32应用程序的基础,即使使用MFC库来开发win32应用程序,也要对API函数有一定的了解。MFC封装了API函数,但并没有封装所有的API函数,比如发送消息函数:
SHBrowseForFolder
Win32 API的⼀些对系统,进程,线程,内存等操作的API上⾯与常⻅常⽤的⼀些windows api。
大概了解一下API
例子123456789101112131415161718192021222324WinodwGetClassName // 获取窗⼝类名SendMessage // 发送消息FindWindow // 查找窗⼝EnumWindows // 枚举所有窗⼝GetVersionEx // 获取系统版本GetSystemInfo // 获取硬件信息GetSystemDirectory // 获取系统⽬录GetWindowsDirectory // 获取Windows 安 ...
C++语言函数讲解(9)
1.引用引用变量引用变量是一个别名,也就是说,他是某个已经存在的另一个名字。一旦引用初始化为某个变量,就可以使用名称或变量名称来指向变量。
引用很容易和指针混淆,但是他们不同。
不存在空引用。引用必须连接到一个合法的内存。【指针可以是野指针】
一旦引用被初始化为一个对象,就不能指向另一个对象。指针可以在任何时候指向另一个对象
引用必须在创建初始化。指针可以在任何时间被初始化。
1234567891011121314#include <iostream>using namespace std;int main(){ int a = 10; int& b = a;//此时改变b的值就是改变a的值 cout << a << endl; cout << b << endl; printf(" %p\n %p\n",&a,&b); b = 20; cout << a << endl; cout << b << endl; retur ...