能力值:
( LV2,RANK:10 )
|
-
-
2 楼
个人觉得很难
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
感觉像解释器
|
能力值:
( LV12,RANK:340 )
|
-
-
4 楼
汇编指令如何解密?应该是加密后的指令吧?
用xor 应该可以,不过key2就得跟指令一样长。
举个例子:
执行的指令1
55 push ebp
8BEC mov ebp, esp
用key1 0x7F按字节异或得到加密后的数据edata:
2AF493
执行的指令2:
C1E804 shr eax, 0x4
拿加密后的数据与指令2异或。得到key2[3]:
EB1C97
这样key1的长度是固定的是1字节。key2的长度与指令2的长度相等。
用key1按字节异或加密的数据,就可以得到执行的指令1
用key2异或加密的数据,就可以得到执行的指令2
这种方法只适合保护软件
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
我觉得应该是这样理解
指令A
指令B。
将B作为key . 可以计算得到指令C。
那么反过来 , 将C作为key做逆运算,可以得到指令B,同时也可以得到指令A。
所以只要数据量足够大,是可以得到的。
|
能力值:
( LV3,RANK:30 )
|
-
-
6 楼
楼上正解,两次异或就可以反得到以前的 A 或 B 指令序列。
|
能力值:
( LV3,RANK:30 )
|
-
-
7 楼
http://www.mouseos.com/assembly/example/multiplex.html
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
可以实现 ! 把代码从写 我写了个实现加密的壳 实现代码从写(写入覆盖指定子程序)在启动子程序 多线程启动两个线程实现修改 和执行代码 可以实现边修改边执行 执行了一个片段就解密下一个要执行的代码片段 循环 这个是看太极图 想到的方法
|
能力值:
(RANK:860 )
|
-
-
9 楼
简单的或许可以,但正常软件所使用到的汇编指令太多,如何一一转换
|
能力值:
(RANK:860 )
|
-
-
10 楼
高人啊,能否共享下代码
|
能力值:
( LV7,RANK:110 )
|
-
-
11 楼
他这个应该属于边解密边执行吧,而不是同一段指令经过不同的key转换成另外一种功能的指令。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
可以 很容易实现
mov eax,0x1000000
call [eax]
把0x1000000里面的内容处理了就行了
|
能力值:
( LV7,RANK:110 )
|
-
-
13 楼
[QUOTE=iceway;1253500]可以 很容易实现
mov eax,0x1000000
call [eax]
把0x1000000里面的内容处理了就行了[/QUOTE]
你这个貌似属于复用一片地址空间,要想实现不同的功能,地址空间里得提前放置进去不同的指令,好像楼主的意思是一个指令序列A能实现某种功能,然后用一个key进行加密或解密或散列等等操作刚好转换成另一个指令序列B,而B能实现另外一种功能。
|
能力值:
( LV7,RANK:100 )
|
-
-
14 楼
我感觉 有些网友没理解透我的意思吧
同一堆汇编指令,被某个key解密后能实现a功能,被第二个key解密后又实现b功能
就是说 以下这几个指令:
mov eax,ebx
push eax
经过某个解密算法后变成
add ebx,ecx
ret
还是刚才那几条指令,经过另外一种解密算法后变成:
lock xadd [ecx],edx
sub eax,edx
或者只是说进行简单的xor,也能把原来的指令序列变成其他功能。当然这得对指令千挑万选才行啊。比写shellcode难多了。
如果说能作出来,应该是很强大的
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
兄弟的想的好远 一步一个脚印 相信你会有成就的
|
能力值:
( LV12,RANK:340 )
|
-
-
16 楼
这个真心不错~
|
能力值:
( LV12,RANK:200 )
|
-
-
17 楼
某种意义上说,壳和花指令就是干这个的,但只能迷惑反编译器,而“最后执行的”==“解密算法解码后的”,动态脱壳就靠这个。所以如果不改CPU,你想实现的功能就是加壳嘛。
真要实现你要的功能,解码要在CPU内部发生,比如CPU内部增加一个专门用于解码的MCU,MCU根据私钥对执行前的"指令"解码,生成真正执行的指令通过专门的通路把和私钥配对的公钥传给MCU。当然还要解决至少两个问题:保证只有合法访问能够和MCU通信,CPU执行效率问题。现在的通用CPU和操作系统都不会这么搞的,太过复杂以及没有必要,因为已有的手段已经能够起到比较好的保护作用。
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
同一扇门,用不同的钥匙打开,可以看到不同的世界?从最简单的异或试试。。
|
能力值:
( LV13,RANK:357 )
|
-
-
19 楼
只要key足够长就行.....
|
能力值:
( LV3,RANK:30 )
|
-
-
20 楼
对,我说的简单异或得到的结果有可能不是指令了,A 或 B 两条序列异或,一般情况下得到的肯定是一个不能执行的序列,因为指令集在设计的时候也不会考虑去遵循这样的规律,即使偶尔千挑万选得到某些指令存在这样的偶然,但通过这些少数的指令也很难完成通用程序所需要的功能,再加上很多指令都会对地址进行直接编码,而地址也只有通过添加偏移来造成不同程序段来避免内存覆盖。所以结论是,可能是有的,只是猜测,因为我也没有实际去发现哪些指令存在这样的特性,解决思想就是利用这些极少数的特性指令,通过频繁读取内存(就可以少用寄存器,使指令简单),然后在内存寻址的时候用 key 加上偏移,对指令进行针对性的加密,那么 key 就是由这些指令 key 和内存地址偏移组成,小心地还原出不同的代码段。但是否能成功,没有验证过,只是这种想法而已。
|
|
|