网站首页 | 网页制作 | 网络编程 | 图形图象 | 冲浪宝典 | 操作系统 | 软件教学 | 网络安全 | 认证考试 | 下载中心 | 游戏下载
| 网络安全首页 | 安全在线 | 病毒防治 | 黑客攻防 | 漏洞研究 | 黑客编程 | 破解手记 |
您现在的位置: 超人气学院 >> 网络安全 >> 破解手记 >> 文章正文 用户登录 新用户注册
对于DLL通过增加重定位项直接调用引入表函数           
对于DLL通过增加重定位项直接调用引入表函数
作者:未知 文章来源:网络收集 点击数: 更新时间:2006-3-29 15:58:20

对于DLL文件,还有一种比较简单的方法,通过在冲定位表中增加IAT的重定位项实现。
  先看下面补丁程序:
                .  
0167:01077228  PUSH      EBX  ;函数名字
0167:01077229  PUSH      EDX  ;Kernel32的hModule
0167:0107722A  NOP
0167:0107722B  NOP
0167:0107722C  NOP
0167:0107722D  NOP
0167:0107722E  NOP
0167:0107722F  NOP
0167:01077230  CALL      [KERNEL32!GetProcAddress]
0167:01077236  TEST      EAX,EAX
0167:01077238  JZ        010772AC
                .
                .
  在SoftIce中写补丁时候就像上面一样写,完成后,0167:01077230处的指令代码将为:FF 15 xx xx xx xx,我们需要做的就是将xx xx xx xx处写入冲定位表。在本例子中,基地址为1040000,所以1077230处的RAV为37230,由于重定位表都是1000对齐的,所以要在重定位表中RVA为37000的索引中增加。
  1、找到重定位表中索引为37000的地方,如果没有这个索引,就给
      它加上,并将它的长度字段(第2个双字)加2
  2、计算重定位项目值:37230 - 37000 + 2 = 232,加2是跳过指令
      字FF 15,指令字之后才是要重定位的地址。
  3、加上属性:232 or 3000 = 3232,项目值是字单位,高4位是属
      性。
  4、将项目值3232按照内存存放规律--低地址放低字节,高地址放高
      字节加到这个索引(37000)中,在这个例子中,高低一样了。
  5、将重定表最后为0的字节删掉2个。同理,你要增加2个项目,就
      要删掉4个0;增加了索引,最好删掉同样长度的0字节。否则如
      果.reloc节不是最后一个节的话,这个节后面的数据或程序就出
      错了。若是最后一个节,可以不删,但要注意对齐

[1] [2] 下一页

[ 收藏此页到: 天天|和讯|博采|ViVi|狐摘|我摘|天极 ] 文章录入:kinda    责任编辑:kinda 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    专 题 栏 目
    最 新 热 门
     Softice使用指南---配[2611]
     中文编辑排版专家—Dr[2442]
     一个破解注册码的例子[1436]
     C语言学习系统v3.0破解[1413]
     获得键盘扫描码[1243]
     破解ComposerforRingT[1082]
     自动脱壳之ProcDump应[990]
     流光4.5完全破解[978]
     VisualBasic程序之Sma[978]
     PE文件结构剖析[891]
    相 关 文 章
    对于破解的一些想法
    破解ASP2DLL
    tElock0.98加壳的DLL脱壳
    对于用ollydbg的一点补充
    破解noodles-crackme2.5(8
    利用DLL来完成注册器的制作
    脱DLL文件的ASPROTECT的壳
    用Ollydbg手工脱壳之Pebun
    DllDIY:另一种修改方式
    DLLShowV4.6
    使用KERNEL32.DLL破解??
    对于破解的一些想法.
    注册dllshow4.4
    VoxPhoneProV3.0Build36所
    破解用Vboxs420.dll加密的
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)