第一次在看雪发言!
由于毕业论文的关系,和楼主做了同样的事情。用ror对字符串加密!不过我从metasploit上得到的相应汇编代码(http://metasploit.com/shellcode/windows/).该网页上,其他几个工具也是用相同的办法来加密函数名称的。希望楼主是这个方法的原始创始人,而且极为凑巧,您文章的也提到了用ror移动13次, 该网页上也是用这样的方式,源代码是"ror edi, 13"。期望国内多出这样的牛人吧!!!!!
这里也用python代码演示下整个加密过程,只需要在恰当的位置打印出相应变量的值,就可以看见整个字符串的加密变化的过程。 过程不复杂,但因为移位操作会让数据变长,每加密一次,只取最后8个字,下面代码中的"temp[-9:-1]"的切片就是完成该动作。
------------------------------------------------------------------------------------------------
#!/usr/bin/python
import sys
number1=1
while 1:
print '##-----------------------------------------------##'
FuncName=raw_input('Input the Function name :')
hashsum=0
StringLen=len(FuncName)
RunNum=0
for i,ch in enumerate(FuncName):
print '----------------------------------'
a=ord(ch)
hashsum=a+hashsum
hashsumTemp=hashsum
hashsum1=hashsum>>13
hashsum2=hashsum<<19
hashsum=hashsum1+hashsum2
temp=hex(hashsum)
if len(temp) > 10 :
temp1=temp[-9:-1]
temp2='0x'
temp3=temp2+temp1
hashsum=int(temp3,16)
print 'This is the correct hash-pice:',hex(hashsum)
print '----------------------------------'
print
fin=hex(hashsumTemp)
print 'The Function-hash result is :',fin
print '##-----------------------------------------------##'
print '[1] Do Once Again'
print '[2] Exit'
number1=raw_input('Input the number to select :')
if number1!='2':
pass
else:
sys.exit()
------------------------------------------------------------------------------------------------
GetApi:
pop edx
pop eax ;hModule
pop ecx ;lpApiString
push edx
pushad
mov ebx, eax ;hModule ebx
mov edi, ecx ;lpApiString edi
xor al, al ;al清零
.Scasb:
scasb ;SCASB指令将AL中的值同目标内存中的字节比较,目标内存数据是由ES:DI寻址,
;如果找到了该字符,DI指向匹配字符串后面的一个字符.
jnz .Scasb ;继续搜索
dec edi
sub edi, ecx ;这两句实现获得lpApiString的地址
xchg edi, ecx ; edi = lpApiString, ecx = ApiLen