逆向分析笔记

分析原理

首先了解调用约定,了解函数的入参方式;
然后分析ebp,ebp是当前栈底,ebp-x是获取入参,因为入参是调用方准备好的,ebp+x是局部变量,因为这部分在当前栈帧中。

动态分析

gdb无源码分析

# 1.启动并在第一条指令处停止
starti

# 2.单步调试
si
ni

# 3.查看寄存器信息
info registers

# 4.查看寄存器值
x/4xw 0x1000

# 5.设置断点
break *0x1234

解读:

Dump of assembler code for function main:
   0x0000000000400526 <+0>:     push   %rbp
     |                 |          |       
     |                 |          汇编指令  
     |                 指令偏移量
     |          
     指令地址

指令偏移量:+0表示函数的起始地址,+4表示相对于函数起始地址的偏移地址。

IDA free

todo.

静态分析

查看基本信息

file ./a.out
objdump -f <可执行文件>
readelf -a <可执行文件>

查看二进制内容

# 最全面的方法
objdump -s <可执行文件> | less

# 以十六进制和ASCII查看二进制
hexdump -C <可执行文件>

# 编辑二进制,和objdump不同,hexdump可以查看任意文件
hexdump -C <可执行文件> | vim -

# 查看二进制中的字符
strings <可执行文件>

查看反汇编内容

objdump -d <可执行文件> | less

查看符号表

nm <可执行文件>
objdump -t <可执行文件>
(gdb) info fuctions

查看段信息

objdump -h <可执行文件>
readelf -S <可执行文件>

查看入口函数地址

objdump -f <可执行文件>
readelf -a a.out | grep Entry

查看依赖信息

ldd <可执行文件>

查看elf类型

readelf -h <elf文件> | grep 
Type:                              DYN (Shared object file)

破解分析

一般来说,密钥都需要比较函数,因此:

  1. 反汇编二进制
  2. nm 查看符号表
  3. 查找可疑的比较函数,记录下内存地址
  4. 使用gdb,设置断点
  5. 测试哪个断点处和输入密码后的比较有关
  6. 查看寄存器中的值,观察rdi、rsi等值和输入值的关系,推理算法
  7. 将算法逆向用于被比较值,得出正确的入参值

这就是简单算法的破解方案,所以才需要RSA这种不可逆推的算法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
JavaScript逆向工程涉及到逆向分析、代码还原、代码修改等多个方面,其中Webpack作为一个重要的静态模块打包器,也是逆向工程中需要重点关注的一部分。以下是一些关于Webpack逆向笔记: 1. Webpack的打包过程是从入口文件开始的,Webpack会递归地遍历所有依赖模块,并将它们打包成一个或多个Bundle文件。因此,逆向工程的第一步就是找到Webpack打包的入口文件。 2. 在入口文件中,Webpack会通过require或import语句加载其他模块,并递归地遍历所有依赖模块。因此,我们可以通过分析入口文件来了解应用的整体结构和模块依赖关系。 3. 在Webpack的打包过程中,每个模块都会被赋予一个唯一的标识符,这个标识符可以通过module.id来获取。因此,我们可以通过分析打包后的代码,来了解每个模块的标识符和依赖关系。 4. 在Webpack的打包过程中,Loader和Plugin是非常重要的扩展机制,它们可以对模块进行转换和优化。因此,我们可以通过分析Loader和Plugin的源代码,来了解它们的作用和实现原理。 5. 在逆向工程中,我们可以使用Webpack的source-map选项来生成源映射文件,从而方便我们进行代码还原和调试。同时,我们也可以使用Webpack的devtool选项来设置不同的调试工具,以便更好地进行逆向分析和调试。 总的来说,Webpack作为静态模块打包器,在JavaScript逆向工程中扮演着重要的角色。通过对Webpack的逆向分析,我们可以更加深入地了解应用的整体结构和模块依赖关系,从而更好地进行代码还原和调试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多弗朗强哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值