• 简单0llyDbg脚本学习


    刚开始学,菜鸟一B。

    下面直接进入主题。


    首先练习一个脱壳。ASPack 2.12 -> Alexey Solodovnikov

    我们尝试用ESP定律

    程序入口为

    00431001 > 60 pushad
    00431002 E8 03000000 call crackme2.0043100A
    00431007 - E9 EB045D45 jmp 45A014F7
    0043100C 55 push ebp
    0043100D C3 retn
    0043100E E8 01000000 call crackme2.00431014
    

    F8一次,下硬件访问断点,F9运行后取消断点。来到这

    004313B0   /75 08           jnz short crackme2.004313BA
    004313B2   |B8 01000000     mov eax,1
    004313B7   |C2 0C00         retn 0C
    004313BA   \68 01F04200     push crackme2.0042F001
    004313BF    C3              retn
    004313C0    8B85 26040000   mov eax,dword ptr ss:[ebp+426]
    004313C6    8D8D 3B040000   lea ecx,dword ptr ss:[ebp+43B]
    

    F8单步走三次就到达程序OEP

    00403861    55              push ebp
    00403862    8BEC            mov ebp,esp
    00403864    6A FF           push -1
    00403866    68 F0624000     push CrackMe1.004062F0
    0040386B    68 D44C4000     push CrackMe1.00404CD4
    00403870    64:A1 00000000  mov eax,dword ptr fs:[0]
    00403876    50              push eax
    00403877    64:8925 0000000>mov dword ptr fs:[0],esp
    0040387E    83EC 58         sub esp,58
    00403881    53              push ebx
    00403882    56              push esi
    00403883    57              push edi
    00403884    8965 E8         mov dword ptr ss:[ebp-18],esp
    00403887    FF15 48604000   call dword ptr ds:[406048]                ; kernel32.GetVersion
    

    整个流程就是——


    1、单步F8 
    2、记录ESP的地址 
    3、在ESP的地址处,下硬件访问断点 
    4、接着运行 
    5、删除硬件断点 
    6、单步走3次 
    7、就来到OEP了! 


    所以脚本就可以写了。

    脚本一般都是保存为OSC格式,也可以保存为txt格式

    var addr//定义一个变量addr 
    sto //单步,也就是F8 
    mov addr,esp //把此处ESP的地址给变量addr 
    bphws addr,"r"//下硬件读取断点,也就是硬件访问断点 
    run//运行,也就是F9 
    BPHWC addr //取消断点 
    sto //单步,也就是F8,第1次 
    sto //单步,也就是F8,第2次 
    sto //单步,也就是F8,第3次 
    cmt eip,"this is the OEP! found by JoyChou"//在EIP处,也就是现在OD停留了位置加注释 
    MSG "dump and fix it"//弹出一个对话框
    ret//结束脚本 

    快吃午饭了,写着玩玩,下午还去图书馆!

    下面接着一个PE PACK的壳

    整个流程是——

    1、单步F8三次

    2、记录ESP的地址 
    3、在ESP的地址处,下硬件访问断点 
    4、接着运行 
    5、删除硬件断点 

    6、F8一次就到OEP


    所以脚本为

     1 var addr//定义一个变量
     2 sto//单步走
     3 sto
     4 sto
     5 mov addr,esp
     6 bphws addr,"r"//在esp处下硬件访问断点
     7 run
     8 bphwc addr//删除断点
     9 sto
    10 cmt eip, "this is the OEP ,found by JoyChou"//在eip加注释
    11 MSG "Now, dump and fix it"
    12 
    13 ret
  • 相关阅读:
    学习进度条第一周
    构建之法阅读笔记01
    软件工程个人作业01
    《构建之法》阅读笔记
    Day6:闭包函数、无参装饰器
    Day5:函数参数
    Day4:字符编码与文件处理
    Day3:数据类型(布尔值、集合)
    Day2:数据类型(列表、元组、字典)
    Day1:初识Python
  • 原文地址:https://www.cnblogs.com/Joy7/p/2544868.html
Copyright © 2020-2023  润新知