Notes-Reverse

写十种注入方式,demo,防护

IDA 定位 main 函数

强制解释为代码/汇编,格式转换,n/d键

IDA自动识别特征码函数,从系统lib提取,自动替换标识

  • 识别程序所用的lib
  • link -lib /extract:build\intel\st_obj\printf.obj libc.lib ;生成printf.obj
  • pcf printf.obj ;生成printf.pat特征码文件
  • sigmake -n”vc6_printf” printf.pat printf.sig

三操作数值

加一位等于乘于二??

shl edx, 1

左移一位等于 2^

汇编优化

数学方面的,移位,高版本优化,优化模型

无符号、有符号数操作,后期补,加减乘除汇编代码

有种在熟悉常见的汇编表达的感觉,算是在补基础

基本信息收集

静态分析:

C/C++语言 -> IDA Pro

Delphi -> Delphi Decompiler

VB ->

.NET(C#) -> dnspy

Java -> JUI 反编译

  • API信息
    • 查看导入的API
    • 看导出的API
  • 查看字符串信息

动态调试:

  • 创建DLL到临时目录,在创建文件和关闭文件汇编中间拷贝出生成的DLL(动态调试)

脱不掉壳&调试软件打不开:

行为监控

  • PCHunter
  • HRSword
  • 火绒剑
  • Process Monitor

检查壳和开发语言工具:
DIE_winxp_portable_3.01
exeinfope
PEID 0.95

原理

壳 - 保护可执行文件(*.exe,*.dll)

压缩壳 - 减小可执行文件体积

加密壳 - 对抗逆向分析

UPX压缩壳

空节,sizeofImage

硬件断点、执行断点、内存断点

  • 识别是否加壳
  • 找OEP(入口点)
    • 远跳,跨节
    • 经验看所有的OEP,熟悉OEP,汇编无特征
    • ESP定律
    • API
    • 单步跟踪(步过循环,只向跳转)
  • dump
  • 修复PE

无对抗修表

手动dump一次

压缩壳实现(加壳部分)

压缩壳实现(壳代码部分)

脱壳