查壳
是 upx 工具的壳
手动脱壳
-
OD 打开
-
定位到 PUSHAD
-
ESP 定律,下个断点
-
找到 POPAD,找到入口点 OEP
-
Dump 出 exe 文件
-
修补 IAT 表
-
成功脱壳
工具脱壳
工具:UPX
可以使用 upx -d xxx.exe 直接脱壳
反汇编
找到关键函数
分析可得 flag: HappyNewYear!
文章作者: W1ndys
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 W1ndysの小屋!
相关推荐
2024-03-23
3月25日汇编语言与逆向工程
3 月 25 日汇编语言与逆向工程 主函数 汇编指令 push rbp:将当前函数的栈帧基址寄存器的值压入栈中,用于保存前一个函数的栈帧基址。 mov rbp, rsp:将栈顶指针的值赋给栈帧基址寄存器,这样 rbp 指向了当前函数的栈帧。 sub rsp, 10h:在栈上为局部变量分配 10h(16 字节)的空间,即在栈上分配了 16 字节的空间用于存储局部变量或临时数据。 mov esi, 4:将立即数 4 赋给 esi 寄存器,该寄存器通常用于作为函数参数传递整型参数。 mov edi, 3:将立即数 3 赋给 edi 寄存器,通常用于作为函数参数传递整型参数。 call fun:调用名为 fun 的函数,传递了两个参数,分别是 4 和 3,它们存储在 esi 和 edi 寄存器中。 mov [rbp+m], eax:将 eax 寄存器的值(即函数 fun 的返回值)存储到位于当前栈帧的偏移量 m 处的内存地址中。这里的 m 是一个未知的值,需要根据具体的代码上下文来确定。 mov eax, 0:将 0 赋给 eax...
2024-03-18
汇编语言与逆向工程实验报告1
汇编语言与逆向工程实验报告 1
2024-05-19
汇编语言与逆向工程实验报告10
搭建实验环境 安装 nasm 和 r2 1sudo apt install nasm 123git clone https://github.com/radareorg/radare2.gitcd radare2sys/install.sh 实验内容 然后建立 zero.asm 文件。将编译好的程序输入 对文件进行编译 通过 r2 看到对应的汇编指令和二进制指令 新建一个 pack.asm 文件,对刚刚的程序进行加壳操作将二进制指令加密。 新建 pack_zero.asm 文件对刚刚加壳的程序进行脱壳,得到原始二进制指令。 对文件进行编译。输入./pack_zero 111 脱壳成功。
2024-06-02
汇编语言与逆向工程实验报告12
VM 指令:0 1 dup 11 == 17 9 if jmp swap over + swap 1 + 2 jmp swap print 地址 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 指令 0 1 dup 11 == 17 9 if jmp swap over + swap 1 + 2 jmp swap print 解释: 压栈 0 1 dup 复制栈顶元素 11 == 比较栈顶元素是否等于 11 17 9 if 若栈顶元素等于 11,则跳转到第 17 行指令;否则跳转到第 9 行指令 jmp 无条件跳转 swap 交换栈顶两个元素 over 复制栈顶元素的上一个元素 + 相加栈顶两个元素 swap 交换栈顶两个元素 1 + 加 1 2 jmp 无条件跳转 print 输出栈顶元素 最终输出:55
2024-06-08
汇编语言与逆向工程实验报告13
配置环境 安卓模拟器上传 Frida-server Windows 连接安卓模拟器 运行 Frida-server hook 查看 PID 连接进程 hook 函数拿到 flag exp 12345678Java.perform(() => { const data = Java.use("net.persianov.crackme0x03.Data"); const f = data.isPasswordOk; f.implementation = function (arg) { console.log(arg); return true; };}); 12345Java.perform(() => { const fg = Java.use("net.persianov.crackme0x03.FlagGuard"); console.log(fg); ...
2024-06-19
汇编语言与逆向工程实验报告14
成功启动设备的应用 去除 root 检测 静态分析flag
评论