更灵活地定位内存地址的方法
and 和 or 运算符:按位与和按位或;
按位与:可以置指定位为 0;按位或:可以置指定位为1。
;==========
mov ax,stack
mov ss,ax
mov ax,data
and 和 or 运算符:按位与和按位或;
按位与:可以置指定位为 0;按位或:可以置指定位为1。
;==========
mov ax,stack
mov ss,ax
mov ax,data
编译和链接:
先将一个个asm编译,如果出错则只需要修改其中一个源代码,全部ok了再链接,可以节省很多时间。
程序的跟踪:debug + 程序名
CX = 程序的长度(指令字节的长度)
p 执行 int 指令
q 推出
术语:栈顶标记 入栈 出栈
数据的长度:栈操作的数据是 字型数据。
例:
push AL、BL、……错误!8位寄存器,字节型数据。
push AX、BX、……16位寄存器,字型数据,正确。
入栈:push
一开始基本上看不懂,题解说是虚拟机指令逆向,那我们必须学一手,长长见识;
上来先给v4赋值:
qmencpy函数
从unk_403040地址开始作为int数组赋值给v4,由于intel是小端存储,所以每四个字节,从后往前查看字节:
还是回到View-A窗口,转换成dword大小的数组,取消dup()显示:
BUUCTF firmware
题目为固件,斌walk分离里面有个squashfs文件系统,需要解包,但是我电脑不知道为何解不了。解开后有个backdoor程序,找到域名和端口。
puzzle
一打开不知道怎么拼,没有任何提示,自己手动拼是几乎不可能的!但是检查了一遍并没有什么额外的信息….搜了一圈才知道有个python训练模型叫gaps
拼图游戏
于是在github上下载这个项目,[pip3 install -e .]安装,完了之后在bin目录下:
使用方法
逆向太好玩了,我爱逆向
steam上的热门免费联机游戏,改Unity核心组件,没壳没加密,直接反编译了
修改内容:
使用方法:
steam文件夹\steamapps\common\Muck\Muck_Data\Managed\
将里面的Assembly-CSharp.dll替换喽
[BJDCTF2020]BJD hamburger competitio
Unity逆向,找不到关键文件,搜了才知道Assembly-CSharp.dll是游戏逻辑核心
Unity游戏基本上都是C#写的!用dnSpy反编译
Unity3D游戏分析
hello_world_go
现在IDA7.6可以直接还原go语言函数了!
YoungterDriver
多线程操作,要考虑多个线程同时进行的作用!
启用两个线程交替对flag进行处理,最后比对其值
第一个线程