0%

【取证】程序逆向分析相关

【取证】程序逆向分析相关

寄存器

寄存器是用来储存常用数据的,在16/32位架构中,包含8个16/32位的通用寄存器:AX/EAX、 BX/EBX、 CX/ECX、DX/EDX、 SP/ESP、BP/EBP、DI/EDI及SI/ESI。 AX/EAX、BX/EBX、CX/ECX、DX/EDX在一般情况下作为通用的数据寄存器,用来暂时存放计算过程中所用到的操作数、结果或其他信息。它们还可分为两个独立的8位寄存器使用,命名为AL、AH、BL、BH、CL、CH、DL和DH。除了这些还有其他的寄存器,像IP/EIP寄存器存放的一直都是下一条执行指令的地址。在64位中,寄存器都以R开头,例如,RAX、RBX、RCX和RDX这样。

通常ESP是栈顶地址,EIP是下一条执行指令的地址

操作指令

  • 数据传送类指令:

    这是使用最频繁的指令,格式为:MOV DEST,SRC (move)
    功能:将一个字节、字或双字从源操作数SRC传送至目的操作数DEST。

    push 入栈

    pop 出栈

  • 算数、逻辑运算指令:

​ 如add、sub、mul、div、and、or、xor等算数逻辑运算。(add eax,1) (add eax,ebx)

  • 控制执行流程指令:
    cmp:对两个操作数执行减法操作,修改状态标识寄存器Z。
    test:对两个操作数执行与操作,修改状态标识寄存器。
    jmp:强制跳转指令。 jump
  • 条件跳转指令,包括jz、jnz等,这里的z代表的是ZF标志位,如图3,是条件跳转指令表。
    image-20230616153327478

题型

勒索病毒

  1. 加密算法:AES,DES,RSA,RC4等
  2. 文件相关:后缀,文件名,监控文件注册表等变化工具:procmon(火绒剑)
  3. 相关提示信息:警告.txt,钱包地址

远控木马

  1. C2地址,端口,执行功能(监控键盘记录,监控屏幕)

C/C++逆向

python逆向

混淆的py源码

pyc文件,反编译方法:uncompyle3,pycdc,在线网站,转字节码

1
2
3
4
5
6
7
import dis
import marshal

with open() as f:
f.read(16)
code = marshal.load(f)
dis.dis(code)

Pyinstaller 打包的exe:pyinstxtractor-ng

pyd,cpython:ida

.net逆向

dnspy