net dll脱壳后加载dll错误时出现异常是什么原因

关于脱壳后的DLL应该如何处理? - 『脱壳破解讨论求助区』
- 吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.cn
后使用快捷导航没有帐号?
只需一步,快速开始
请完成以下验证码
请完成以下验证码
查看: 1020|回复: 4
关于脱壳后的DLL应该如何处理?
阅读权限10
发帖求助前要善用【】功能,那里可能会有你要找的答案;
求助软件脱壳或者破解思路时,请务必在主题帖中描述清楚你的分析思路与方法,否则会当作求脱求破处理;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人。
有一个DLL文件,本人已经了,当然也用reflector和ilspy打开了,代码也看到了,但是,现在主要有两个问题,第一,怎么修改这个DLL文件呢,第二怎么把修改后的转为dll?请详细点,我新手来的!!
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限20
.net 的dll? 这方面不熟悉 看高人的
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
装上可以修改的插件即可
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限100
reflector和ilspy 都有插件并且有修改代码和保存的功能。
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
reflector和ilspy 都有插件并且有修改代码和保存的功能。
修改代码是直接修改IL这样的机器代码还是可以修改C#或者VB这样修改的?因为我不太懂IL如果可以修改C#或者VB这样的语句就好了
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
免责声明:吾爱破解所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
( 京ICP备号 | 京公网安备 87号 )
Powered by Discuz!
Comsenz Inc.&>&DLL文件脱壳
DLL文件脱壳
上传大小:86KB
把DLL加壳文件脱壳,把DLL加壳文件脱壳,把DLL加壳文件脱壳,把DLL加壳文件脱壳,
综合评分:2
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有3条
不可以用,我累个擦
根本不能用.谢谢!
打开根本就没有打开DLL文件的选项!
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
DLL文件脱壳
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*投诉人姓名:
*投诉人联系方式:
*版权证明:
*详细原因:
DLL文件脱壳有没有大神能帮小弟反编译一个被混淆的.NET的dll【脱壳吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:1,061贴子:
有没有大神能帮小弟反编译一个被混淆的.NET的dll收藏
在学习一个CAD软件的二次开发,它自己为.NET封装了一个dll,我想利用这个封装进行插件开发,无奈该dll被混淆加密过。用.NET Reflector反编译显示索引超出下限错误,用最新的de4dot去去壳得到的是.NET Reactor 4.8的壳,但de4dot无法脱去。请大神帮看看。文件见回复。
1楼给三胖干儿子百度。
2楼给三胖干儿子百度。
3楼给三胖干儿子百度。
登录百度帐号打开支付宝首页搜索“8354584”,即可领红包
DLL文件脱壳
PE重定位表学习手记
先定义一下用到的几个变量:
char *hModule=NULL;//映射后的基址
PIMAGE_OPTIONAL_HEADER pOptH//扩展头
PIMAGE_DATA_DIRECTORY pRelocTable=NULL;//指向重定位表
PIMAGE_BASE_RELOCATION pRelocB//指向重定位块
WORD *pRelocD//16位的重定位数据指针
PE头的定位和分析比较简单,不再多说。
首先,先判断重定位表是否存在:
pRelocTable=&(pOptHeader-&DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC]);
判断pRelocTable-&VirtualAddress和pRelocTable-&Size是否为0即可。
若不为0,则重定位表存在。
ModulBase+pRelocTable-&VirualAddress即可定位到重定位表。
重定位表的结构如下图所示:
重定位表由一个个的重定位块组成,如果重定位表存在的话,必定是至少有一个重定位块。
因为每个块只负责定位0x1000大小范围内的数据,因此如果要定位的数据范围比较大的话,
就会有多个重定位块存在。
每个块的首部是如下定义:
typedef struct _IMAGE_BASE_RELOCATION {
} IMAGE_BASE_RELOCATION;
把内存中需要重定位的数据按页的大小0x1000分为若干个块,而这个VirtualAddress就是每个块的起始RVA.只知道块的RVA当然还不行,我们要知道每一个需要重定位数据的具体地址。
每个需重定位的数据其地址及定位方式用两个字节来表示,记为RelocData,紧跟在IMAGE_BASE_RELOCATION结构之后,如图所示。
每个块中重定位信息的个数如何确定?
这个可由每个块结构中的Size来确定。Size的值是以DWORD表示的当前整个块的大小,先减去IMAGE_BASE_RELOCATION的大小,因为重定位数据是16位WORD的,再除以2,就得到个重定位数据的个数。由Size可以直接到达下一个重定位块,如图所示:0x5Ex000000EC=0x5E8500EC即为第二个重定位块的地址,直至某个块首结构的VirtualAddress为0,表明重定位表结束。
每个块中重定位数据的个数确定了,如何得知具体每个需进行重定位的数据的地址呢?
每个16位重定位信息包括低12位的重定位位置和高4位的重定位类型。要得到重定位的RVA,IMAGE_BASE_RELOCATION'的'VirtualAddress'需要加上12位位置偏移量. 类型是下列之一:
IMAGE_REL_BASED_ABSOLUTE (0) 使块按照32位对齐,位置为0。
IMAGE_REL_BASED_HIGH (1) 高16位必须应用于偏移量所指高字16位。
IMAGE_REL_BASED_LOW (2) 低16位必须应用于偏移量所指低字16位。
IMAGE_REL_BASED_HIGHLOW (3) 全部32位应用于所有32位。.
IMAGE_REL_BASED_HIGHADJ (4) 需要32位,高16位位于偏移量,低16位位于下一个偏移量数组元素,组合为一个带符号数,加上32位的一个数,然后加上8000然后把高16位保存在偏移量的16位域内。
IMAGE_REL_BASED_MIPS_JMPADDR (5)
IMAGE_REL_BASED_SECTION (6)
IMAGE_REL_BASED_REL32 (7)
以第一个重定位数据0x34AC为例,其高四位表明了重定位类型为3,即IMAGE_REL_BASED_HIGHLOW,Win32环境下的重定位基本都是这个类型的。
其低12位则表明了相对于VirtualAddress的RVA偏移量。VirtualAddress即需重定位的数据块的起始RVA,再加上这低12位的值就得到了具体的需要进行重定位处理的数据的RVA。感觉说得有点乱,总之就是VirtualAddress与每一个16位重定位数据一起可以得到一个具体要进行重定位处理的数据的RVA。
也就是说:
要进行重定位处理的数据的RVA=VirtualAddress+RelocData&0x0FFF
=0xx34AC)&0x0FFF
=0x000014AC
再加上模块基址,就得到了在内存中的真实地址了
由ModuleBase=0x5E830000,可得这个重定位数据的地址为:0x5Ex000014AC=0x5E8314AC
转到OD的反汇编窗口,Ctrl+G跳到这个地址,可以看到:
OD自动标上了下划线,表明这是一个重定位数据,接下来的几个数据也可以一一进行对应.
至此,重定位算是搞明白了。
那如何进行修正呢?
把需要修正的数据减去IMAGE_OPTINAL_HEADER中的ImageBase,再加上当前加载的实际基址,就可以了。至此重定位完成!当然,也可以根据别的基址进行重定位。比如加载ntoskrnl.exe时,按照ntoskrnl.exe在内存中加载的实际基址0x804E0000(我系统上的数据)进行重定位之后,然后就可以干很多事情了~~比如查找原始SSDT,或者进行 InlineHook检测,搜索未导出函数等等,总之比较有用。
加壳的DLL处理重定位表有以下几种情况:
1)完整的保留了原重定位表;
2)对原重定位表进行了加密处理;
像ASPack,ASProtect等壳属于第1种情况,没有加密重定位表,脱壳后,只需找到重定位的地址和大小即可。
像UPX,PECompact等壳属于第2种情况,必须重建重定位表,这也是本文所要讨论的,本文以UPX为例来讲述一下重定位的重建。
用UPX v3.01将EdrLib.dll文件加壳,用PE工具查看其PE信息。
EntryPoint:E640h
ImageBase:400000h13.5.1 寻找OEP
当DLL被初次映射到进程的地址空间中时,系统将调用DllMain函数,当卸载DLL时也会再次调用DllMain函数。也就是说,DLL文件相比EXE文件运行有一些特殊性,EXE的入口点只在开始时执行一次,而DLL的入口点在整个执行过程中至少要执行两次。一次是在开始时,用来对DLL做一些初始化。至少还有一次是在退出时,用来清理DLL再退出。所以DLL找OEP也有两条路可以走,一是载入时找,另一方法是在退出时找。而且一般来说前一种方法外壳代码较复杂,建议用第二种方法。
UPX壳比较简单,往下翻翻,就可看到跳到OEP的代码:
eax, dword ptr [esp-80]
short 003DE7FB
&- E9 372AFFFF
13.5.2 Dump映像文件
停在OEP后,运行LordPE,在进程窗口选择loaddll.exe进程,在下方窗口中的EdrLib.dll模块上单击右键,执行“dump full”菜单命令,将文件抓取并保存到文件里,如图13.43所示。
图13.45 抓取DLL内存映像
对于DLL文件来说,Windows系统没有办法保证每一次运行时提供相同的基地址。如果DLL基址所在内存空间被占用或该区域不够大,系统会寻找另一个地址空间的区域来映射DLL,此时外壳将对DLL执行某些重定位操作。从图13.43得知,此时DLL被映射到内存的地址是03D000h,与EdrLib.dll默认的基址400000h不同,被重定位项所指向的地方是已经重定位了的代码数据。
例如这句:
A1 58B43D00
eax, dword ptr [3DB458]
为了得到与加壳前一样的文件,必须找到重定位的代码,跳过它,让其不被重定位。重新加载DLL,对上句重定位的地址3D1267h下内存写断点,中断几下,就可来到重定位的处理代码。
al, byte ptr [edi]指向UPX自己加密过的重定位表
指针移向下一位
EAX=0?结束标志
short 003DE7C7
short 003DE7BA
EBX的初值为(0xFFC+基址)
eax, dword ptr [ebx]EBX指向需要重定位的数据,取出放到EAX
ESI指向UPX0区块的VA,本例=3D1000
dword ptr [ebx],重定位
short 003DE79C
ax, word ptr [edi]
short 003DE7A9
ebp, dword ptr [esi+E044]改好ESI为401000后,按F4到这里
UPX壳己将原基址重定位表清零,重定位操作时,使用其自己的重定位表。地址3DE7B4h处ESI指向UPX0区块的VA,本例为3D1000h,为了让代码以默认ImageBase的值400000h重定位代码,可以在这句强制将ESI的值改为401000h。来到这句后,双击ESI寄存器,改成401000h,然后按F4来到3DE7C7h这时。此时代码段的数据没被重定位,可以Dump了。
833D 68AD4000 00
dword ptr [40AD68], 0
运行LordPE将DLL映像抓取,并保存为upx_dumped.dll。13.5.3 重建DLL的输入表
ImportREC能很好地支持DLL的输入表的重建,首先,在Options里将“Use PE Header From Disk”默认的选项去除。这是因为ImportREC需要获得基址计算RVA值,DLL如果重定位了,从磁盘取默认基址计算会导致结果错误。
?1)在ImportREC下拉列表框中选择DLL装载器的进程,此处为loaddll.exe进程。
?2)单击“Pick DLL”按钮,在DLL进程列表中选择EdrLib.dll进程(见图13.47)。
图13.47 选择DLL进程
?3)在OEP处,填上DLL入口的RVA值1240h,单击IAT AutoSearch按钮获取IAT地址。如果失败,必须手工判断DLL的IAT位置和大小,其RVA为7000h,Size为E8h。
?4)单击“Get Import”按钮,让其分析IAT结构重建输入表。
?5)勾选Add new section,单击“Fix Dump”按钮,并选择刚抓取的映像文件dumped.dll,它将创建一个dumped_.dll文件。13.5.4 构造重定位表
原理请参考本文开始处的说明。
先来回顾一个重定位表的结构:
IMAGE_BASE_RELOCATION STRUCT
VirtualAddress
SizeOfBlock
0; 其中:Bit15—Bit12为类型 type,Bit11--Bit0 为ItemOffset
IMAGE_RELOCATION ENDS
重定位表以1000h大小为一个段,因为ItemOffset最长为12位,即刚好为1000h。如果还有更多段,将重复上面数据结构,直到VirtualAddress为NULL,表示结束。
ReloREC工具可以根据一组重定位的RVA,重新构造一个新的重定位表。首先要做的工作是将UPX外壳这些要重定位的RVA提取出来。
在处理重定位代码语句中,下面这句就是对代码重定位,其中EBX保存的就是要重定位的地址。
dword ptr [ebx],EBX指向要重定位的RVA
补丁的思路是找块代码空间,跳过去执行补丁代码,将重定位的地址转成RVA,并保存下来。如下语句跳到补丁代码处:
short 003DE80A
我们键入的补丁代码:
edx, dword ptr [3E0000]从全局变量3E0000h取一地址指针
ebx, 3D0000减外壳基址,将ebx中的地址转成RVA
dword ptr [edx],将获得的RVA保存下来
指向下一个DWRD地址
dword ptr [3E0000],将指针保存到全局变量中
跳回外壳代码
3E0000h这个地址是OllyDbg的插件HideOD临时分配的,其初始值设为3E0010h,如图13.71。
补丁代码键入完成后,外壳在处理重定位相关代码时,这段补丁代码将需要重定位的RVA全部提取出来。执行完补丁代码,数据窗口将保存需要重定位的RVA,
将需要重定位的RVA复制出来(选取数据时,最后一个DWORD数据是0),操作时单击鼠标右键,执行菜单Binary/Binary copy(二进制复制)功能,再运行WinHex,新建一文档,将这段二进制数据粘贴进去,粘贴时,选择ASCII Hex模式(图13.52),然后将提取的数据保存为Relo.bin。
Relo.bin中保存的就是需要重定位的地址,以RVA表示。部分数据如下:
ReloREC这款工具,就是根据这些RVA重新生成一份新的重定位表
准备工作完成,运行ReloREC,将Relo.bin拖放到ReloREC主界面上可打开此文件,如图13.53。然后在dumped_.dll里找一块空白代码处保存重定位表(一般在UPX1或UPX2区块里找),在这选择C000h处。在Relocation's RVA域里填上新重定位表的RVA地址,本例为C000h,最后单击“Fix Dump”按钮,打开上节刚修复输入表的dumped_.dll文件,即可完成重定位表的修复。
看雪软件安全论坛
http://www.pediy.com
没有更多推荐了,ReloX修复DLL脱壳重定位表工具合集下载_Dll_LoadEx+ReloX+EdrTest西西软件下载
西西软件园多重安全检测下载网站、值得信赖的软件下载站!
相关软件 /中文/ /中文/ /中文/ /中文/ /英文/ /中文/ /中文/ /中文/ /英文/ /中文/顶好评:50%踩坏评:50%请简要描述您遇到的错误,我们将尽快予以修正。轮坛转帖HTML方式轮坛转帖UBB方式
29.0M/英文/6.3
33.8M/中文/4.3
22.3M/中文/3.7
303M/中文/1.3
651.2M/中文/2.9
41.1M/英文/5.2
11.2M/中文/7.2
&Dll_LoadEx+ReloX+EdrTest工具,带有教程。OllyICE V1.10 汉化插件增强版:
安卓官方手机版
IOS官方手机版
cr173小编为您整理了dll文件合集下载和dll文件修复工具下载大全,方便解决您日常出现的一些dll问题。dll简介:DLL的全称是DynamicLinkLibrary,中文叫做“动态链接文件”。在Windows操作系统中,DLL对于程序执行是非常
中文 / 1.1MFastCopy是Windows平台上最快的文
英文 / 28KB液晶屏坏点检查利器(IsMyLcdOK)能
中文 / 196KBCCEnhancer增强你的CCleaner的功
英文 / 26.7Mnirlauncher收录了超过100款免安
中文 / 6.2M端端(Clouduolc)是一个利用已有的
中文 / 26KBdevrtl.dll是一款windows系统的动
ReloX修复DLL脱壳重定位表工具合集
下载帮助西西破解版软件均来自互联网, 如有侵犯您的版权, 请与我们联系。}

我要回帖

更多关于 加载插件dll时出错 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信