能力值:
( LV13,RANK:970 )
|
-
-
26 楼
那自然阿。否则怎么了得
|
能力值:
( LV9,RANK:690 )
|
-
-
27 楼
最初由 nbw 发布
没看过兄弟的文章。不过算法才是正道。耍手腕是早晚要挂的。
既然说跳转,顺便介绍一个老罗站点上的4字节跳转: ........
记得tElock里面有这样的例子:
一个jXX $+1
跟一个dec ecx
具体记不清了,就是这种巧妙的构造
|
能力值:
(RANK:10 )
|
-
-
28 楼
我不懂我支持
|
能力值:
( LV8,RANK:130 )
|
-
-
29 楼
最初由 cyclotron 发布
记得tElock里面有这样的例子: 一个jXX $+1 跟一个dec ecx 具体记不清了,就是这种巧妙的构造
在tElock里面那个指令是
jMP $+1
leave
代码是 E9 FF C9
所以等效于FFC9 dec ecx ;个人认为是一个挺漂亮的小花
to nbw:我去找找,不过目前我仍认为如果真的要实现像你所说的那样,就是要$+3
|
能力值:
( LV2,RANK:10 )
|
-
-
30 楼
迷宫+每个房间都设置计算+反单步+反跟踪
|
能力值:
( LV9,RANK:250 )
|
-
-
31 楼
大家讨论得很热闹啊,来凑个数。
对于要隐藏跳转,如果用虚拟机实现,可能初期效果好,但如果出现反编译器,就可以得到原码级的代码,如flash的脚本反编译等,所以得经常更新虚拟机的指令集,这样不利于维护。
对于一些小技巧的东西,实用性不大,只要公开一些对付手法,也没有什么价值。
那些才是原则性的东西呢?
我想最好的方法就是结合cracker人自身弱点这方面考虑,
比如,一般人看到过多烦杂的代码都会烦,可以设想构造一个类似混乱器的代码生成器,对于关健代码进行混乱处理,原先是20行的代码,把它扩展成10万行代码以上(这是基于目前微机大内存、高速而使用)
另一个方法,估计是以后的主流,主要是与网络结合,比如电话激活的方式,对于关健代码,关健跳转,可以用空代码代替,需要时再从网络数据库下载,而程序的更新代码也是通过网络数据库的方式提供,到时crack时,面对的不是单机程序,而是类似IE这样的一个装载器了。
|
能力值:
(RANK:1060 )
|
-
-
32 楼
opcode的研究意义不大,重叠起来充其量能对抗w32dasm
ida可以d了然后在旁边写上,od就不必会说了。
|
能力值:
( LV2,RANK:10 )
|
-
-
33 楼
SMC可行吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
34 楼
最初由 RoBa 发布
只是巧合,实际编程中很难有碰巧一句代码可以从中间拆成另一句的。
当然不是巧合了。
举一个例子:
test eax,12345678h
该指令除了修改标志,没什么副作用,你差不多可以插入你的程序任何地方。
然后你的jmp可以跳到它的中间去。至于跳过去后,执行什么,你自己随便决定吧。只要在操作数的区域内即可。
花指令的技巧最早甚至被用来节省指令码,而不是目前一般的加密应用:)
|
能力值:
( LV2,RANK:10 )
|
-
-
35 楼
最初由 lordor 发布 大家讨论得很热闹啊,来凑个数。
对于要隐藏跳转,如果用虚拟机实现,可能初期效果好,但如果出现反编译器,就可以得到原码级的代码,如flash的脚本反编译等,所以得经常更新虚拟机的指令集,这样不利于维护。 对于一些小技巧的东西,实用性不大,只要公开一些对付手法,也没有什么价值。
........
我以前想过,其实编译器做加密工作是最合适不过。
可以增加选项,让编译器自动压缩代码、防跟踪、乱跳、迷宫等。
目前的编译目标都很工整的一块一块。如果把程序切歌城很细的小块。然后使用简单或复杂的jump连接起来,功能不变但是很难阅读,他甚至从一个函数跳到另一个函数中间走一段,然后又到其他函数走一段,然后回来。但逻辑上这些函数可以一点关系也没有。
|
能力值:
( LV2,RANK:10 )
|
-
-
36 楼
支持!!!!!!!!!!!!!!!
|
能力值:
( LV12,RANK:220 )
|
-
-
37 楼
来个水贴个人觉得:
如果是壳作者和安全爱好者可以去研究这些代码变形等等的技术
对于一般的软件作者,更重要的是写好自己的软件功能。
用别人写好的加密产品,术业有专攻。
精力太分散,软件肯定.....................
我不懂技术.....请高手指正
|
能力值:
( LV12,RANK:330 )
|
-
-
38 楼
也许可以把跳转的地址和算法结合起来
比如F(x,y,z)=常数,构造成G(x,y,z)-A=跳转地址
结合SEH跳转出错产生异常就注册失败
不过好象和加密代码段也是一样的,只是这里数据决定了流程
也许可以用STL写个有限状态机,和算法结合,每个状态做一些解密来计算出进入下一个状态的跳转地址,然后每个状态都做点和程序功能有关的事。也许这样可以设计出一个机制使静态分析很困难
以上纯粹是菜鸟胡猜,别当真。。。。
|
能力值:
( LV12,RANK:650 )
|
-
-
39 楼
最初由 freeeman 发布
我以前想过,其实编译器做加密工作是最合适不过。
可以增加选项,让编译器自动压缩代码、防跟踪、乱跳、迷宫等。 ........
随着高级语言的发展,我看乱跳、迷宫这个早晚会自然形成 现在的VB已经很有这个意思了,简单的几句能拉成老长老长。
|
能力值:
( LV2,RANK:10 )
|
-
-
40 楼
最初由 RoBa 发布
随着高级语言的发展,我看乱跳、迷宫这个早晚会自然形成现在的VB已经很有这个意思了,简单的几句能拉成老长老长。
我希望的不是“简单的几句能拉成老长老长”,而是扰乱执行路线,多用高级技巧,但尽量不降低效率。
不清楚VB的情况,但我见过很多编译的汇编代码,编译的效率实在让我难受,经常是太多的垃圾语句。每次有跟踪代码就恨不得自己马上写一个编译程序:)
跳转多了效率也会下降,但只要不是瓶颈之处,就问题不大。
因为编译器做压缩、加壳、加密、反跟踪,能够起到最佳的效果。
1)只有编译器是最清楚代码运行的 CPU和操作系统环境的“人”,可以尽情发挥平台相关的技巧。
2)每个人都伤脑筋去加密,不如一家做好,大家共享。
3)加壳只能是附加在原来代码之外。编译器可以深入到代码的骨髓里,它可以决定每一个指令变成什么。
|
能力值:
( LV2,RANK:10 )
|
-
-
41 楼
方向有点变了。
不管是多级跳转,还是加强算法强度,还是将指令转意意义都
不大。
|
能力值:
( LV5,RANK:60 )
|
-
-
42 楼
花指令
|
能力值:
(RANK:300 )
|
-
-
43 楼
我对混乱代码生成器比较有兴趣
可是,这种方法存在一个问题,
即使我们把真正跳转隐藏在数万行代码海里,只要破解者有一个正确序号,便可以追踪出真正跳转位置
|
能力值:
( LV9,RANK:3410 )
|
-
-
44 楼
最初由 WiNrOOt 发布 来个水贴个人觉得: 如果是壳作者和安全爱好者可以去研究这些代码变形等等的技术 对于一般的软件作者,更重要的是写好自己的软件功能。 用别人写好的加密产品,术业有专攻。 精力太分散,软件肯定..................... ........ 术业有专攻
同意这个观点
到处搞变形干脆自己搞个加密器
|
能力值:
( LV9,RANK:290 )
|
-
-
45 楼
最初由 xIkUg 发布 构建跳转表 jmp xxx1 jmp xxx2 jmp xxx3 jmp xxx4 ........
嗯,个人觉得是个不错的方法,
但是实现好像有点难度(编写程序的时候),
想想一个长长的跳转表看起来也够烦的
突然有个想法:跳转表可否动态生成呢?需要的时候才生成地址跳过去
这样的话静态DASM就好像没门了
|
能力值:
( LV2,RANK:10 )
|
-
-
46 楼
一个简单的流程记录器,全部KO这些所有的想法。
|
能力值:
( LV4,RANK:50 )
|
-
-
47 楼
有精力的话可以做个下面的过程试试
1、保护环境
2、计算();//将真正的结果保存在某个内存单元里面或者寄存器
3、恢复环境
4、有2种可能的分支处理,在第2步运算种决定
---a、jmp [esp-???] // ???的内容是第2个步骤动态修改的
---b、jmp register // 何种寄存器是第2个步骤动态修改的
|
能力值:
( LV9,RANK:370 )
|
-
-
48 楼
最初由 kanxue 发布
3、利用消息机制来传递各类信息(如SendMessage等)。 ........
用消息机制在万能五笔6.41版中已经实现了。它用的是POSTQUITMESSAGE,
比如:
00423804 |. 53 push ebx
00423805 |. FFD7 call edi ;USER32!POSTQUITMESSAGE,发送退出消息,准备走人了
00423807 |> 56 push esi ; /hObject
00423808 |. FF15 FC014500 call dword ptr ds:[<&KERNEL32.CloseHandle>] ; \CloseHandle
0042380E |. 5F pop edi
0042380F |. 5E pop esi
00423810 |. 5B pop ebx
00423811 |. C9 leave
00423812 \. C3 retn
00423805处非常隐蔽,花了我很长的时间,才找到。
详见我的新帖子: 万能五笔的修改后续
|
能力值:
( LV2,RANK:10 )
|
-
-
49 楼
最初由 vcasm 发布 有精力的话可以做个下面的过程试试 1、保护环境 2、计算();//将真正的结果保存在某个内存单元里面或者寄存器 3、恢复环境 4、有2种可能的分支处理,在第2步运算种决定 ........
你这个思路很早就有软件【记得好像是什么BOOK电子演示制作软件,电脑报强力推荐过,才1MB大小居然比当时价值上万的AW都不逊色】这么用过了,那个时候我才高二实力不济,但对于国外破解手似乎无大碍。
|
能力值:
( LV2,RANK:10 )
|
-
-
50 楼
看了各位的帖,感觉收益非浅。
只是我觉得,我们好象都在被微软耍着玩?
|
|
|