能力值:
( LV15,RANK:930 )
|
-
-
2 楼
@第一种方法
你可以把 api name 使用对称算法,转换成其他的值存储.比如 crc32
base64,md5 等等, dll 名字要使用可逆加密算法存储.
@第二种通过暴力搜索代码节,如果遇到一条指令的操作数是在输入表中(
即类似这样的 call [api] 和 mov reg,[api], jmp [api] 的指令) 把他们都改为 call my_api_proxy ( 被修改的指令肯定大于等于 5 个字节,仔细想想,呵呵),call my_api_proxy 的 VA 和对应的 api 加密保存,用于在 my_api_proxy 中查询转发,注意替换的指令最好有限制, 比如只替换 系统 api, 或只替换 call [api], 和 jmp [api] 形式,因为逆无法确定一些引入是符号还是函数.
如果目标程序没有使用特殊方法使用 api(比如内嵌汇编之类的特殊方法调用), 这样就可以把 输入表丢弃了.
我只是简单的描述了一下.实际操作还有很多的东西需要注意一下
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
确实有这个问题
原来call API要写成call[&API]形式就多了一个字节.
|
|
|