能力值:
( LV9,RANK:610 )
|
-
-
2 楼
用exe的哈希 作为key
dll里取这个key 搞一段自修改代码用key来解密 如果key不对(即不是自己调用的) 必然解码错误 程序崩溃。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
高手能不能说明白点,exe的哈希是个随机数吗,如果是的话,好像没有方法验证吧
|
能力值:
( LV4,RANK:50 )
|
-
-
4 楼
数字签名,搞定
|
能力值:
( LV3,RANK:20 )
|
-
-
5 楼
准备:
1、计算一个你EXE的key
1、将Dll中的关键函数这个key进行加密
DLL工作:
1、在DllMain函数中获取到主模块的信息,通过某些方法计算出一个Key
2、用这个Key来解码Dll中其他加密过的函数
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
学习一下。。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
但是关键是,如果我的exe文件由于版本更新的问题,经常修改,你这种方法是不是效率太差了,就是说一旦exe发生变化,就意味着哈希值也变了,函数的key也要改变,那就太......
|
能力值:
( LV9,RANK:610 )
|
-
-
8 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
mark一下。
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
嗯,这个相对简单点。
|
能力值:
( LV3,RANK:20 )
|
-
-
11 楼
然后一个关键跳就过去了
|
能力值:
( LV9,RANK:610 )
|
-
-
12 楼
如果想做的安全一些
可以在这个关键跳的地方加一些自校验等等
再对这个dll 加一个vmp的壳就更完美了
|
能力值:
( LV3,RANK:20 )
|
-
-
13 楼
加个EPE壳,调用壳提供的SDK函数,保证安全。
|
能力值:
( LV3,RANK:20 )
|
-
-
14 楼
EPE对我这类半桶水来说还是挺牛的,它用Explorer作调试器,调试运行,这样其他调试器就不能调试运行了,只可惜被牛人做了脱壳机
LZ这个不外乎三种思路,一种是DLL主动并直接地获取EXE的信息进行校验(比如直接计算EXE的MD5值),这种情况下如果DLL用了强壳比如VMP之类的,几乎很难爆破,相对来说比较安全,但是EXE一旦更新DLL就报废了,这样还不如不用DLL,EXE和DLL弄成一个模块;
一种是DLL主动但间接通过一些接口获取EXE信息进行校验(比如通过EXE的导出函数或者系统API等间接获得信息),这类不管DLL有没有加壳,如果别人通过调试手段知道了原理的话,或Hook或Fake这些接口的数据就可以骗过DLL,安全系数也不是太高。
还有一种是DLL被动地被EXE修改信息才能运行,也就是DLL本身就是个半成品,本身是有BUG或者暗桩的,EXE启动DLL后在某些特定的时刻修改DLL的部分代码才能正常运行。如果DLL本身有BUG,基本上很快就会被发现,被人跟踪一遍或许就可以把DLL变“废”为宝,但如果是暗桩的话就没有那么容易发现了,而且修复的代码只在运行到需要修复的地方才会触发,并且不会一次修复全部代码,这样其他人几乎很难得到一个完全正确的DLL。不过这个方法只是浮云,目前应该没有壳可以提供这样的功能,自己实现又太过复杂……
所以还是建议LZ干脆把EXE和DLL两个项目合并到一块算了。
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
- -!直接写段代码自定位自己处理要调用的API函数..加密保存成普通的二进制文件(只要执行代码部分)写个小工具保存出来就是了...主EXE READFILE读上来解密直接跳进读取到内存那位置执行....
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
都是好方法啊
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
取决于你的DLL加壳强度,否则都没什么用。
|
能力值:
( LV2,RANK:16 )
|
-
-
18 楼
非对称加密。dll生成公私钥与exe通信,正确可以调用,错误返回退出
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
很好很强大,赞一个
|
|
|