吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 17192|回复: 54
收起左侧

[易语言 转载] 内存运行 v3.8版

  [复制链接]
20120427 发表于 2017-11-17 00:28
本帖最后由 20120427 于 2018-8-21 12:42 编辑
直接在内存里运行dll/exe, 用处很大。
要内存运行  内存地址对齐、修复重定位、修复IAT  以及HOOK GetModuleFileNameA 都不可缺少,下面是我写的一个调用例子,用了OD LordPE 调试了不知道多少次
使用方法:具体方法参考调用例子,直接把你所编译的dll/exe 文件放在图片资源表,dll/exe 支持加壳,VMP壳公开函数不能使用中文

QQ截图20171230140618.png


更新内容:
1.修改获取函数地址、卸载内存dll、调用例子,增加支持黑月编译器编译的程序  内存运行静态编译的窗口程序dll,这意味着使用黑月编译器不再需要进行设计窗口。
2.支持调用多个内存dll、获取函数地址、卸载内存dll
3.改正  获取函数地址方法错误 
4.增加 调用函数地址 命令 最大支持30个参数
5. 获取函数地址支持以序号方式获取
6.内存dll互相调用
7.HOOK 函数修改
8.支持SE壳
9.兼容各种系统
10.提升稳定性
11.完善鸠占鹊巢术
12.修改模块名称、函数名称,毕竟不单单只支持内存运行dll。
13.卸载内存模块:对内存运行的模块启动的线程进行销毁,原先的并没有销毁线程,因此很容易产生异常。(加了SE壳的dll,会产生很多线程,假设不去销毁这些线程,卸载肯定会出现异常。)
14.UPX加壳不能内存运行的问题
15.输入表修复问题  由于代码写的比较乱,没有注意
16.HOOK GetModuleFileNameA 、GetModuleFileNameW 还需要通过 RtlSetLastWin32Error 设置0,真是百密一疏,没有想到GetOpenFileNameA这个api还会通过GetLastError获取错误代码,并且走向了程序退出的代码,没有想到,本模块更新那么久以来还是昨天被人提出问题。
补充说明:
这个内存运行dll理论上来讲是支持各种dll 内存运行的,但是你必须要保证这个dll是可以正常运行的另外如果这个dll运行需要调用另一个dll 你必须要保证你系统文件目录  64位 C:\Windows\SysWOW64\  32位 C:\Windows\System32\或者文件目录下存在这个dll,否则因为缺少这个dll而内存运行失败。这个内存dll 支持加壳,但是你要考虑兼容性的问题,如果可以正常运行但是无法内存运行,就需要多加测试了。
 
内存运行兼容性并不是特别的好,不能完全适用任何程序。
内存运行dll :  多个dll 内存运行互相调用
QQ截图20171121214922.png

与没有使用内存运行dll的也是一样的效果,这样做可以把这4个文件  合成1个文件。
QQ截图20171121210724.png
此模块不单单支持内存运行dll,同时还支持内存运行exe
更新支持SE加壳:
QQ截图20171127180734.png

需要注意的是加了SE壳的EXE 是没有重定位表的,一个没有重定位表的EXE 要内存运行必须要加载到固定的镜像基址 如:00401000,要内存运行这种没有重定位的EXE就需要做手术了
视频演示如何内存运行没有重定位表的EXE : https://share.weiyun.com/d418ae3efe243236a35fab42ffe9ac5a

鸠占鹊巢:夺舍大法
https://share.weiyun.com/e7066e72a9009a552a4992f2e4f6d349

鸠占鹊巢(更新模块+实例演示鸠占鹊巢2017-12-3)
https://share.weiyun.com/df1b545190590b3851c747c4dced31ea

鸠是一个没有重定位表的EXE,正常内存运行EXE是需要有重定位表的,一个没有重定位表的EXE,只能在固定的镜像基址才能内存运行,而鹊巢相当一个壳,其实就好比夺舍
易语言生成重定位表方法
修改link.ini
extra_args=/NODEFAULTLIB:"LIBC.lib" /FIXED:NO
/BASE:268435456  指定基址10000000 默认00400000

鸠占鹊巢是为了给那些内存运行失败的程序使用,通常是无重定位表的程序。 鹊巢的镜像大小必须要大于或等于鸠的镜像大小,如果小于可以用LordPE添加区段增加虚拟大小。

有必要说一下一个问题:UPX加壳的文件,无法内存运行的问题。
今天试了下发现UPX加壳的文件无法内存运行,内存运行写法也没什么错,重点是输入表的修复方法,我是通过OriginalFirstThunk修复的IAT,但UPX将OriginalFirstThunk给抹掉了,当然也是发现了写法的一个不足之处。

解决方法可以将FirstThunk地址修改到OriginalFirstThunk位置上,这边也更新一下模块。。。。

QQ截图20171230165416.png

win10皮肤(内存运行测试).zip (263.58 KB, 下载次数: 262)

V3.8版 更新下载:
https://share.weiyun.com/5XfEkaB

免费评分

参与人数 9吾爱币 +7 热心值 +9 收起 理由
红楼一梦 + 1 + 1 能给份源码研究研究就好了 十分感谢
by_aka + 1 + 1 用心讨论,共获提升!
agl + 1 + 1 如果一个EXE有好几个附加DLL,单独内存运行EXE好像不管用
jwj52 + 1 大佬别整这么麻烦,直接整个 内存运行没有重定位的exe
zpfttkl + 2 + 1 我很赞同!
suyam + 1 谢谢@Thanks!
fastray + 1 + 1 谢谢@Thanks!
zhangtao7055 + 1 + 1 热心回复!
你数学多少分 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

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

 楼主| 20120427 发表于 2018-1-11 20:23
@jwj52
内存运行没有重定位表的exe 并不容易,因为没有重定位表的exe  镜像基址都是固定的,意味着这个镜像基址不能和程序本身的镜像基址有冲突
简单来说就是 内存运行的exe没有重定位表,镜像基址如果是00400000,那么程序本身的镜像基址就不能是00400000,但是还有一个问题,00400000这块内存一般都有可能会被系统使用了,释放也不行,重新申请这块内存也行不通,所以无重定位表的exe是很讲究的,没有什么很好的办法。  当然如果你的无重定位表exe镜像基址是在如10000000,这块内存没有被系统使用,可以通过VirtualAlloc 申请到这块内存,就可以内存运行了,但是大多程序镜像基址都是00400000。对于没有重定位表的exe没有什么比较好的又不麻烦的方法,重新生成重定位表的工具,是有,但我用过后发现这种重新生成重定位表工具的作者自己应该也没有仔细的测试过,修复出来与实际差太多了,一旦变动镜像基址就会出错了,而绝大多数重定位表修复工具,都是依靠重定位表进行修复,一个没有重定位表的还真没啥办法重新建立重定位表
 楼主| 20120427 发表于 2018-1-24 20:28
225298658 发表于 2018-1-24 01:02
@20120427 内存运行加壳后的EXE和DLL,大概的测试一下,兼容性很差!
对了,HOOK_模块是怎么用的?

内存运行需要有重定位表, exe如果要加壳必须要经过处理,要保证加壳后没有被抹掉重定位表.
有些壳是有自校验的,通过内存运行自然就会有冲突,壳的某些检测同样和内存运行会有冲突,比如SE壳的内存检测、自校验,正常内存运行显然是不可能的,我这个也是对一些api进行了处理。
可以参考一下例子,例子也有写内存运行加了SE壳的exe和dll。如果内存运行失败,可以进行测试看看哪些加壳选项是不兼容的。
头像被屏蔽
hzq7916 发表于 2017-11-17 00:45
xxhaishixx 发表于 2017-11-17 04:15
这是个好东西,支持先。
lzr1000 发表于 2017-11-17 06:54
支持一下,谢谢。
wang65424773 发表于 2017-11-17 07:15 来自手机
跟着学习下,谢谢分享
你数学多少分 发表于 2017-11-17 07:49
楼主,这是怎么用的?
头像被屏蔽
luli1111 发表于 2017-11-17 07:52
提示: 作者被禁止或删除 内容自动屏蔽
HNB74110 发表于 2017-11-17 07:55
这个是干嘛用的啊
heverst 发表于 2017-11-17 07:58

楼主,这是怎么用的?
khadwf 发表于 2017-11-17 08:08
请教楼主,这是怎么用的?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-16 15:46

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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