脱壳破解区一篇贴子中疑问
看了这个贴子:https://www.52pojie.cn/thread-1768422-1-1.html
因为不懂脱壳,正在想着学脱壳,想请教论坛脱壳大佬几个问题:
1
回复中有大佬说验证在DLL中实现的,那么DLL在哪里?它是释放DLL后加载,还是内存加载,如果是内存加载,什么是内存加载?
要知道免费软件的源码并没有,二道贩子是怎么添加进去的?又或是使用的什么别的方法。
2
如果真是在DLL验证,先走DLL,之后再跳到原程序OEP运行。那么这个DLL应该是可以DUMP出来吧,如何DUMP出来。
3
爱飞的猫 大佬脱壳方法,直接改OEP,删除xw区段,那么说明这个验证并不像一般的加壳软件,会把如.text区段加密吧,
如果加密区段,再解密区段的话,那么只有秘钥正确才能解码吧,猜想,这个只是加了个验证,并没有对原程序区段进行
加密解密吧,否则并没有解密,直接改OEP,程序肯定运行不了吧。
4
这种验证方式的壳,只说它这种验证方式的,应该有类似的源码吧,求个类似这种方法的开源源码,想看下源码看它是实现的,感觉这样
更直观,了解壳原理。 朱朱你堕落了 发表于 2023-4-3 07:36
从006F8DB7到区段结束,这个PE文件是DLL吗?好像是EXE还是DLL,PE结构里有个什么WORD类型还是DWORD类型的 ...
找个 PE 工具把区段提取下来,然后把文件头之前的内容删掉就行。
MemoryModule-master-5f83e41.zip: https://wwbg.lanzouf.com/iT9yi0s1akyj
1
入口第一句push gd.6F8DB7,在内存中查看这个地址,可以看到PE文件头
006F8395 call gd.6F88C1这个call将上面的PE写入一段内存
006F8599 call gd.6F888E执行上个call写入内存的代码
2
将6F8DB7开始到文件末保存出来就行了
如果文件大小想精确一些就从PE头计算
3
原.text区段未加密
4
这个不是壳,只是进入程序前调用了自己的代码,做法就是加个区段,写入自己的代码,OEP指过去就行了
用StudyPE+等工具就可以实现 本帖最后由 爱飞的猫 于 2023-4-3 03:15 编辑
> 1 回复中有大佬说验证在DLL中实现的,那么DLL在哪里?它是释放DLL后加载,还是内存加载,如果是内存加载,什么是内存加载?
> 要知道免费软件的源码并没有,二道贩子是怎么添加进去的?又或是使用的什么别的方法。
文件不落地,模拟 Windows 加载 PE 文件的方法加载。
免费的源码不清楚,内存加载指的是 “不将 DLL 文件写出到文件后加载”(绕过 LoadLibrary 系列 API)。
随便找一个捆绑 DLL 的工具应该就可以得到类似的效果了。
> 2 如果真是在DLL验证,先走DLL,之后再跳到原程序OEP运行。那么这个DLL应该是可以DUMP出来吧,如何DUMP出来。
导出 .xw 区段然后删掉前面那一部分就能得到一个看起来正常的 PE 文件。不知道是不是调试器问题会提示无效的 PE 文件。
DUMP https://wwbg.lanzouf.com/iR9Mn0ry1ptc 解压密码 `1768422`
其实就是入口点 push 的那块地址指向的内容,直到区段结束。
```
006F8000 | 68 B78D6F00 | push gd.6F8DB7 |
```
```
006F8DB7 4D 5A 90 00 03 00 00 00 04 00 00 00 FF FF 00 00 MZ..........ÿÿ..
006F8DC7 B8 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 ¸.......@.......
006F8DD7 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
006F8DE7 00 00 00 00 00 00 00 00 00 00 00 00 28 01 00 00 ............(...
006F8DF7 0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68 ..º..´.Í!¸.LÍ!Th
006F8E07 69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F is program canno
006F8E17 74 20 62 65 20 72 75 6E 20 69 6E 20 44 4F 53 20 t be run in DOS
006F8E27 6D 6F 64 65 2E 0D 0D 0A 24 00 00 00 00 00 00 00 mode....$.......
```
> 3 直接改OEP,删除xw区段,那么说明这个验证并不像一般的加壳软件,会把如.text区段加密吧,
> 如果加密区段,再解密区段的话,那么只有秘钥正确才能解码吧,猜想,这个只是加了个验证,并没有对原程序区段进行加密解密吧,否则并没有解密,直接改OEP,程序肯定运行不了吧。
加壳过程没有改变原文件的代码区段内容,只是在执行原软件前执行 DLL 的函数。DLL 初始化函数结束后交还控制权给主程序。
当然也不排除将原 EXE 部分字节码抽取,然后在 DLL 的验证结束阶段还原的可能性。
> 4 这种验证方式的壳,只说它这种验证方式的,应该有类似的源码吧,求个类似这种方法的开源源码,想看下源码看它是实现的,感觉这样
更直观,了解壳原理。
随手搜的一个,从内存加载 DLL:(https://github.com/fancycode/MemoryModule) lies2014 发表于 2023-4-3 03:04
1
入口第一句push gd.6F8DB7,在内存中查看这个地址,可以看到PE文件头
006F8395 call gd.6F88C1这个ca ...
大佬能实现4中的功能吗?如何实现。
为了方便演示,测试可以这样:随便编译一个没任何功能的无壳程序,如E语言程序,MFC等都可以,之后加个随便名称的区段,写个helloworld的弹窗进去,同样这个helloworld这个弹窗所在的DLL在本地不存在。弹窗起来后,点确定后,再出来无壳程序,这样就模拟出来和这个软件类似的验证方式了吧?就是想知道代码是如何实现的? 爱飞的猫 发表于 2023-4-3 03:09
> 1 回复中有大佬说验证在DLL中实现的,那么DLL在哪里?它是释放DLL后加载,还是内存加载,如果是内存 ...
从006F8DB7到区段结束,这个PE文件是DLL吗?好像是EXE还是DLL,PE结构里有个什么WORD类型还是DWORD类型的标识,可以知道它是EXE还是DLL,从006F8DB7到区段结束这么一大段,如何弄出来?有没有快捷的方法,如果手工在OD中一直向下拉选中,好长啊,手不好控制,是不是能用第三方工具DUMP?如直接输入个从开始地址到结束地址,就能DUMP出来,之后保存也DLL文件就行了吧。
还有您那个GitHub上的内存加载源码,我下载不了,帮忙上传到兰揍或百度等网盘吧。 吾爱果然都是大佬啊🥹🥹🥹 答复:
1
回复中有大佬说验证在DLL中实现的,那么DLL在哪里?它是释放DLL后加载,还是内存加载,如果是内存加载,什么是内存加载?
要知道免费软件的源码并没有,二道贩子是怎么添加进去的?又或是使用的什么别的方法。
答:push ****** 这里就是DLL的数据。call ****** 这里就是内存加载DLL 。 jmp ****** 这里就是OEP
2
如果真是在DLL验证,先走DLL,之后再跳到原程序OEP运行。那么这个DLL应该是可以DUMP出来吧,如何DUMP出来。
答:随便你用什么工具dump用内存读写然后写出文件也可以。lordPE也行
3
爱飞的猫 大佬脱壳方法,直接改OEP,删除xw区段,那么说明这个验证并不像一般的加壳软件,会把如.text区段加密吧,
如果加密区段,再解密区段的话,那么只有秘钥正确才能解码吧,猜想,这个只是加了个验证,并没有对原程序区段进行
加密解密吧,否则并没有解密,直接改OEP,程序肯定运行不了吧。
答:这个是NX壳。或者说是NX写的融合器。想改自己去找开源的源码自己改
4
这种验证方式的壳,只说它这种验证方式的,应该有类似的源码吧,求个类似这种方法的开源源码,想看下源码看它是实现的,感觉这样
更直观,了解壳原理。
答:开源的。NX壳。难寻。自己百度 xia先生 发表于 2023-4-3 07:56
答复:
1
回复中有大佬说验证在DLL中实现的,那么DLL在哪里?它是释放DLL后加载,还是内存加载,如果是内 ...
开源的,百度应该好找啊,我怎么找不到呢,搜索的关键词不对吧,老兄上传一份?
页:
[1]
2