| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1156 人关注过本帖
标题:关于调用dll的问题~
只看楼主 加入收藏
hold009
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-12-5
收藏
得分:0 
水哥,给我个交详细的例子哦
2012-12-08 14:10
lyfz1123
Rank: 2
等 级:论坛游民
帖 子:7
专家分:35
注 册:2009-8-13
收藏
得分:0 
有收获
2012-12-09 10:24
hold009
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-12-5
收藏
得分:0 
水哥,你给个例子吧,或你说的那个你的shellcode在哪里?如何弄?
2012-12-09 11:41
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
自己编写的DLL 的导入
这个首先你要把DLL 加载到程序进程空间中去
你用 0D的话,要修改段的内容
你要完成的功能是 第一找到位置存放你的shellcode shellcode是机器指令  这个要重定位的  
用jmp指令进行跳转,不用CALL shellcode里面要包含一个jmp回来的指令
这个OD直接调试程序 我木有试过 ,但是机理来说就是 修改指令指针
为什么要重定位,是因为程序在编译过程中就已经确定了各个段和代码的位置了 用的是rav偏移量的概念
这个重定位技术怎么做的
用call指令 比如
call start
start:
pop ebx

这个里面包含的内容是
首先完成的是 EIP的入栈  如果这个时候来句 sub ebx offset start可以求出一个差值 就是跳转后的指令位置和当前指令的距离
你要跳回来 就得跳转点称为p2 call执行后的指令地址值称为P3 那么就有  p3=p2+ebx 来定位这个指令位置

如果你的程序还要使用变量的话  那么你还得修改栈里面的内容

[ 本帖最后由 zhu224039 于 2012-12-10 08:54 编辑 ]

我要成为嘿嘿的黑客,替天行道
2012-12-10 08:53
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
这方面我也比较迷糊,大概吧,因为我也在努力实现这部分
我是从程序的角度在弄这个事情、
用OD 我不是很熟悉哟
建议 看 《加密和解密》 或者《PE权威指南》 都是牛人的著作

我要成为嘿嘿的黑客,替天行道
2012-12-10 08:56
hold009
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-12-5
收藏
得分:0 
水哥,你给个例子吧,或你说的那个你的shellcode在哪里?如何弄?
2012-12-16 11:16
快速回复:关于调用dll的问题~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017181 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved