吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5293|回复: 2
收起左侧

[会员申请] 申请会员 ID:hx131452[申请通过]

 关闭 [复制链接]
吾爱游客  发表于 2010-11-24 18:45
ID:hx131452
邮箱:hx131452@163.com
特长:喜欢逆向,破解分析
案例:
我对Dump文件的认识
首先我们用od加载upx壳来到oep处,用LordPE dump一下吧
双击我们dump下的文件,程序报错
到底是什么原因啊
首先 用lordPe看一下他的入口点 还是原来的
那么我们修改一下 ,发现还是不行 ,那好我们看一下他的输入表,
还是发一段输入表结构吧
typedef struct _IMAGE_IMPORT_DESCRIPTOR {
    union {
         DWORD Characteristics;    // 0 for terminating null import descriptor
         DWORD OriginalFirstThunk; // RVA to original unbound IAT (PIMAGE_THUNK_DATA)
    };
    DWORD TimeDateStamp;          // 0 if not bound,
                                   // -1 if bound, and real date\time stamp
                                   //     in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT (new BIND)
                                   // O.W. date/time stamp of DLL bound to (Old BIND)

    DWORD ForwarderChain;        // -1 if no forwarders
    DWORD Name;
    DWORD FirstThunk;             // RVA to IAT (if bound this IAT has actual addresses)
} IMAGE_IMPORT_DESCRIPTOR; 

typedef struct _IMAGE_THUNK_DATA32 {
    union {
         PBYTE   ForwarderString;
         PDWORD Function;
         DWORD Ordinal;
         PIMAGE_IMPORT_BY_NAME   AddressOfData;
    } u1;
} IMAGE_THUNK_DATA32;

typedef struct _IMAGE_IMPORT_BY_NAME {
    WORD    Hint;               //指出函数在所在的dll的输出表中的序号
    BYTE    Name[1];            //指出要输入的函数的函数名
} IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME;
发现dump下的输入表只有二个字段有值 一个是Name 一个是 FristThunk
看看FristThunk 他指向的是内存中函数地址
用od加载脱壳前的程序 和脱壳后的程序 发现调用的函数地址是一样的,但是脱壳前的程序显示函数名称,而脱壳后的程序不显示函数名称
个人猜测程序报错,可能是在读取输入表的时候 读到的是内存中函数的地址,但是加载exe程序的程序想到这个地址去找api的名字,但是又没有这个名字,造成的错误提示
虽然脱壳后的程序的api没有显示,但是我在函数上按enter还是可以进入函数里面的
取值也是对的
现在回到我们的主题 dump,为什么会出现这种情况啊
Dump是把内存中所有的数据全部dump下了,当然为了保证解密完成我们才到oep处的
其实 我们完全可以双击程序,再dump这样没有任何关系的
那么一些牛人为什么要先到oep,因为他们想知道oep是多少
那么为什么dump后输入表里面FirstThunk是一些函数地址
是因为加载程序的程序给一些要用的API加载内存中,再给地址写进FirstThunk里面
当我们dump下后 看到FristThunk里面就是内存中的地址
那么我们怎么修补啊
首先我们要确认输入表的IAT的位置,用od加载脱壳前的程序定位就可以了
再修复脱壳后的程序
手动修复当然首先该一下oep,再定位到输入表位置,重新构造输入表
一些工具就是重新建立一个节,接着再构造
但是有一点要注意:原来IAT的位置一定不能移动
要保存
如果想动这里,那你就不得了啊

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2010-11-28 00:02
ID:hx131452
邮箱:hx131452@163.com

申请通过,欢迎光临吾爱破解论坛,期待吾爱破解有你更加精彩,ID和密码自己通过邮件密码找回功能修改,请即时登陆并修改密码!
登陆后请在一周内在此帖报道,否则将删除ID信息
hx131452 发表于 2010-12-14 15:49
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-14 15:02

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表