首页
社区
课程
招聘
[原创]反破解技巧 - 随机密码
发表于: 2008-12-11 14:06 18418

[原创]反破解技巧 - 随机密码

2008-12-11 14:06
18418

前面的话:
这个小技巧是我昨天中午回家吃饭的时候突然在路上想到的。文章标题的名字也许不是那么准确,我还没有想到用什么名字来概括这个技巧。
下午我就把这个技巧和我群上的朋友讨论了。谁知差点造成“一个馒头引发的血案”。。。 呵呵..
在这里也谢谢那两位激烈讨论的朋友。。。 讨论很精彩。。
我要声明的是,虽然我标题写的是<原创>.但是由于我分析其他人写的程序较少,由于我E文不好。也少拜读国外牛人大作。 如果这里出现的技术已经被其他地方引用,请通知我。我将其改正。

正文:
在很壳与病毒上,作者都随机加密这一手段对抗反汇编器,给破解人员造成破解时间上的消耗。
例如:

;当启动后运行于此进行解密
call GetEip
GetEip:
pop ebp
;获取密钥
mov ebx, ebp
add ebx, offset DecodeKey - GetEip
mov bl, byte ptr [ebx]
lea esi, Virus
mov edi, esi
mov ecx, offset End_Virus - Virus
cld
DeCode_Loop:
lodsb
xor al, bl
stosb
loop DeCode_Loop
;解密完毕
call Virus  ;执行解密后的病毒
;退出代码---
Virus: 
;加密后的病毒或者壳代码
End_Virus:
;之前被写入的密码 - 随机获得的
DecodeKey:
db 0

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

上传的附件:
收藏
免费 7
支持
分享
最新回复 (41)
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
2
但是你的病毒代码在解密之前已经是固定了的呀. 那样的话解密密匙也是固定的了.

DecodeKey:
db 0  <--- 这里的密匙能随机生成,但是病毒主体已经被固定的密匙加密了呀. 有啥用?

或许我没理解清楚,还请指点~~~
2008-12-11 14:24
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
3
哎,我从来没用过masm,没用纯汇编写过东西,真是惭愧呀.

不过用c内敛汇编也很爽,很精简干练,效果也不错~~
- -
2008-12-11 14:26
0
雪    币: 7115
活跃值: (639)
能力值: (RANK:1290 )
在线值:
发帖
回帖
粉丝
4
不好意思。。。  我刚才没写完 就发了 。。。 呵呵 现在写完了 sudami 可以重新审核一哈 呵呵
2008-12-11 14:29
0
雪    币: 219
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
我没赶上沙发 555
2008-12-11 14:32
0
雪    币: 82
活跃值: (10)
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
6
特征取解码部分,不取病毒体。
2008-12-11 14:36
0
雪    币: 7115
活跃值: (639)
能力值: (RANK:1290 )
在线值:
发帖
回帖
粉丝
7
Nooby MM又来了。 呵呵 欢迎 这个不是免杀的技巧。 对抗反汇编和延长破解时间用的。
MM可以调一下 说实在的 我昨天自己也调试了一下 挺累的 尤其当N这个值略微大些的时候。。。
2008-12-11 14:39
0
雪    币: 65
活跃值: (811)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
8
来膜拜高手来了`~~
2008-12-11 14:40
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
来顶一顶,膜拜高手
2008-12-11 14:54
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
10
如果n很大的话确实能烦一下cracker,不知道n跟vm比哪个效率好点
2008-12-11 15:20
0
雪    币: 231
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
支持大N一下
2008-12-11 17:08
0
雪    币: 364
活跃值: (152)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
12
在群里刚看你们吵完就贴出来了~~~高效啊……我先好好看看
2008-12-11 17:10
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
13
是个不错的法子
2008-12-11 17:58
0
雪    币: 249
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
14
再深入一点,会让那些正义软件很难过的
2008-12-11 18:23
0
雪    币: 399
活跃值: (38)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
15
不错的想法6
2008-12-11 20:45
0
雪    币: 260
活跃值: (102)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
16
我记得逆向工程解密里有类似的做法,不过作者是针对用户输入密码来解密,不是通过seh而是通过crc校验来验证代码是否被正确解密了,我想用crc更保险一些。
2008-12-11 21:09
0
雪    币: 266
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
想法很不错的。
2008-12-11 21:19
0
雪    币: 7115
活跃值: (639)
能力值: (RANK:1290 )
在线值:
发帖
回帖
粉丝
18
其实用异常的一个目的 就是专门让他出错。 给破解者带来麻烦。 用CRC校验对比的话 反汇编后算法被看的太明白了。
2008-12-12 01:35
0
雪    币: 251
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
如果我把加密时的 【0-N】 和 解密时的 【0-N】,都直接改成相同的值,会不会一下就破了?
2008-12-12 08:58
0
雪    币: 260
活跃值: (102)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
20

太狠了,
2008-12-12 09:56
0
雪    币: 44
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
就是通过降低程序效率来获得破解难度。如果N是个大数,这个程序一辈子都运行不了
2008-12-12 09:58
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
想法不错,不过我也感觉没啥用。你用随机人家就不能用循环解密啊。
如果N很大的话,我觉得用循环更快。最慢也就是N次。
你说加标志位,那不是帮人家放了一个循环退出标志吗
我的理解是这样的
2008-12-12 13:37
0
雪    币: 7115
活跃值: (639)
能力值: (RANK:1290 )
在线值:
发帖
回帖
粉丝
23
其实我觉的 很多人误会这个了 这只是一个技巧。 并不是说不能破解。 循环解密是可以 但是如果这个技巧被用在一段壳的N个地方。 对逆向人员就造成了破解上的障碍。 你循环破解 首先要逆向我的加解密算法吧。这是第一,第二要用VM之类的脚本写出这个模拟吧。 如果N过大 也不用大 就256 生成的解密体就有256个 你要一个一个进行验证吧,要看。就要花时间。 这样我随手写几行代码。就可以延长逆向人员的工作时间。 何乐而不为。  还有最后说的标志位 是一个简单的解决办法而已 所以也就没多说放到帖子的最后提了一下。

大家别把这个当做什么什么牛X技术。 只把它当做一个小技巧 在写壳中得到应用。
2008-12-12 14:10
0
雪    币: 399
活跃值: (38)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
24
如果解密者看出来解密过程
直接选择一个加密代码后面的位置,然后F4,不就可以从内存中把解密后的代码提取出来了吗,然后再写入文件,删除掉原来的解密代码
当然如果把这一技巧弄得到处都是就比较麻烦了
2008-12-12 21:30
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
楼上的根本不明白楼主的用以,解码中包含了出路(成功解码后所要执行代码的地址),你这样都能猜到出路然后 F4 的 话,我就服了你

楼主的思路很好,但只能用在加密上
2008-12-12 23:25
0
游客
登录 | 注册 方可回帖
返回
//