zoukankan      html  css  js  c++  java
  • 简单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
  • 相关阅读:
    【题解】【BT】【Leetcode】Populating Next Right Pointers in Each Node
    【题解】【BT】【Leetcode】Binary Tree Level Order Traversal
    【题解】【BST】【Leetcode】Unique Binary Search Trees
    【题解】【矩阵】【回溯】【Leetcode】Rotate Image
    【题解】【排列组合】【素数】【Leetcode】Unique Paths
    【题解】【矩阵】【回溯】【Leetcode】Unique Paths II
    【题解】【BST】【Leetcode】Validate Binary Search Tree
    【题解】【BST】【Leetcode】Convert Sorted Array to Binary Search Tree
    第 10 章 判断用户是否登录
    第 8 章 动态管理资源结合自定义登录页面
  • 原文地址:https://www.cnblogs.com/Joy7/p/2544868.html
Copyright © 2011-2022 走看看