首页
社区
课程
招聘
代码自我清除,自我加密,解密的实现
发表于: 2005-3-25 09:49 8326

代码自我清除,自我加密,解密的实现

2005-3-25 09:49
8326

最近开发壳,但是我的壳主要的安全不在题目上写的,所以就公开在delphi中实现代码自我加密解密清除的方法,高手就不用看了,很简单的。
首先我们要定义几个过程,
procedure EncryptCode(Badress,size,key:cardinal);//Badress为加密起始地址,size为加密大小,key为加密密钥
var
  CTemp:cardinal;
begin
  Virtulloc(pointer(Badress),Size,Page_readwrite,Ctemp);//函数名级不起来拉。
  asm
    push eax;
    push ebx;
    push ecx;
    mov eax,badress;
    mov ebx,size;
    mov ecx,key;
    xor dword ptr ds:[eax],ecx;
    add eax,4;
    dec ebx;
    db $75,fc;//这里可能不正确,反正向xor dword ptr ds:[eax],ecx;跳就可以拉
    pop ecx;
    pop ebx;
    pop eax;
  end;
end;

加密和解密是同一段代码。
代码清除
procedure CleanCode(Badress,size,key:cardinal);//Badress为加密起始地址,size为加密大小,key为加密密钥
var
  CTemp:cardinal;
begin
  Virtulloc(pointer(Badress),Size,Page_readwrite,Ctemp);//函数名级不起来拉。
  asm
    push eax;
    push ebx;
    push ecx;
    mov eax,badress;
    mov ebx,size;
    mov ecx,key;
    xor dword ptr ds:[eax],0;
    add eax,1;
    dec ebx;
    db $75,fc;//这里可能不正确,反正向xor dword ptr ds:[eax],ecx;跳就可以拉
    pop ecx;
    pop ebx;
    pop eax;
  end;
end;
现在就可以调用拉。调用方法很简单,但是要注意的是,不能让加密代码加密自己过程内调用到的。当然对于这个badress我们用
call XXXXXXXX;
pop eax;
搞定。
当然还有很多要做的我就不多说拉。相信大家都知道。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (7)
雪    币: 538
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
居然没人来支持么?
2005-3-26 19:01
0
雪    币: 242
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
支持!!!!!!!!!!!!!!!
2005-3-26 19:18
0
雪    币: 218
活跃值: (1650)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
支持楼主,多发些delphi的类似代码段。
2005-3-26 19:40
0
雪    币: 236
活跃值: (74)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
强烈支持,支持多发点类似的代码
2005-3-27 08:45
0
雪    币: 342
活跃值: (323)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
6
最初由 ijia 发布
强烈支持,支持多发点类似的代码

空了就发
2005-3-27 11:15
0
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
7
哎~~~,可惜我不懂delphi,只能看些皮毛了
2005-3-28 15:23
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
支持
正在学习delphi
2005-3-28 16:50
0
游客
登录 | 注册 方可回帖
返回
//