能力值:
(RANK:1130 )
|
-
-
2 楼
我居然是第一个。。
|
能力值:
(RANK:210 )
|
-
-
3 楼
你刷新按得太快了。
|
能力值:
( LV4,RANK:50 )
|
-
-
4 楼
我是来膜拜的!
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
6louzhanwei
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
先支持,后拜读....
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
下了看看,支持
|
能力值:
( LV9,RANK:250 )
|
-
-
9 楼
占楼学习
|
能力值:
( LV9,RANK:1210 )
|
-
-
10 楼
例子加壳了看不见啊
是否改变了原程序的结构? 既然使用了map文件估计是做了的
|
能力值:
(RANK:210 )
|
-
-
11 楼
例子的壳没有改变代码段, 401000处是一个MD5,直接bp就可以.
|
能力值:
( LV9,RANK:1210 )
|
-
-
12 楼
我也在玩这个,没有搞完.用mistfall直接搞原来的代码,不是壳,因为不能保证反汇编的正确性,只能做成个玩具,过段时间也贴个样本
象这样的代码,反汇编不好做:
.text:00402728 and eax, 3
.text:0040272B add ecx, eax
.text:0040272D jmp dword ptr ds:(loc_40273C+4)[eax*4]
.text:0040272D
.text:00402734 ; ---------------------------------------------------------------------------
.text:00402734
.text:00402734 loc_402734: ; CODE XREF: _memcpy+46j
.text:00402734 jmp dword ptr ds:TrailUp0_0[ecx*4]
.text:00402734
.text:00402734 ; ---------------------------------------------------------------------------
.text:0040273B align 4
.text:0040273B _memcpy endp
.text:0040273B
.text:0040273C
.text:0040273C loc_40273C: ; CODE XREF: _memcpy+31j
.text:0040273C ; LeadUp1_0+1Ej
.text:0040273C ; LeadUp2_0+18j
.text:0040273C ; LeadUp3_0+Ej
.text:0040273C ; DATA XREF: _memcpy+4Dr
.text:0040273C jmp ds:UnwindUpVec_0[ecx*4]
我是想直接变换原程序的代码段,可惜反汇编是个致命问题,只能凑合玩玩.
我的带驱动的OD没在家里的机器上(XP Sp3)试过,OllyIce过不了你的壳呵呵.
|
能力值:
(RANK:210 )
|
-
-
13 楼
跳转表的我是直接放弃的,VC的可以,Delphi的给我MAP我也不能保证稳定.
|
能力值:
( LV9,RANK:1210 )
|
-
-
14 楼
我上面列的代码就是VC6生成的,我也用了map文件,反汇编不能保证,mistfall也就大打折扣了.
如果能直接变换原程序的代码段就太爽了,即使脱壳也没有干净代码,就象刘涛涛的扭曲.
我不清楚他是怎么做的,看他的文章似乎是从obj得到asm做的,难道直接处理的asm文件?
出来的结果还是obj。如果直接处理二进制文件,用mistfall可以做出更强的东西,比如抽代码,
可以把原始代码占用的空间真正拿掉,大大增加修复的难度
|
能力值:
(RANK:210 )
|
-
-
15 楼
我现在的做法只从可靠的入口搜索函数,类似于IDA的启发式.
可以直接跳过这种表,当成不可重塑的指令,放弃这段代码.毕竟这样的情况是少数.
ltt是分析obj的,可以利用link生成代码,我是直接分析bin的,提供map是方便给人找入口的.壳处理的时候是不需要的,原地方的空间可以用来放bytecode,也可以放代码,不过真正用起来就会发现其实空间很有限,因为乱序的时候必须考虑最大指令长度,最后很零散,利用率很低.
|
能力值:
( LV9,RANK:1210 )
|
-
-
16 楼
那段代码是memcpy里的,不清楚为什么编译器会生成这样的代码,z0mbie举过这个例子,问题在于40272D 的jmp跳到指令中间了,显然实际上是不会的,eax不会为0。
不过我没有实际跟过这段代码。
|
能力值:
( LV9,RANK:1210 )
|
-
-
17 楼
我就是想把原地方干掉,不留空间。比如抽走的代码,原始IAT占的空间,或者jmp [iat] -> E9
之类的,把空间压缩掉,修复者只能自己另外找地方重建这些东西。
有的程序可以处理,反汇编失败就只有放弃了。
|
能力值:
(RANK:210 )
|
-
-
18 楼
程序里肯定有分析不了的地方的,比如函数未必都是retn结尾.这个时候map pdb都帮不上忙.
如果要全挪,可能工作量比还原还大..
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
好东西
|
能力值:
( LV9,RANK:1210 )
|
-
-
20 楼
Nooby可能没明白我的意思,我现在做的不是壳,就是个直接变形原代码的工具。 我说压掉空间,只是说如果在这基础上做壳,可以做出比较强的功能。
用mistfall引擎,不用关心函数起止的问题,可以随便挪动代码位置,只要建立好代码之间及PE文件头的参考关系就行。
真正的问题还是反汇编,用mistfall要求正确地识别出所有的代码和数据。这几乎是做不到的,有map稍好点,所以注定是个玩具。原来在某篇文章上对这引擎评价很高,说是感染若干样本无一失败,我觉得很奇怪。看他的代码应该成功率不高才对,况且病毒还没有map的帮助。
做不出实用的东西,做个玩具自己玩也行啊。
|
能力值:
(RANK:210 )
|
-
-
21 楼
大概明白了,以后有机会可以放个bin研究一下.
|
能力值:
( LV4,RANK:50 )
|
-
-
22 楼
把sm引出来了,只能说神作
|
能力值:
( LV2,RANK:10 )
|
-
-
23 楼
区分代码和数据的确没有什么办法,就是目前最好的反汇编IDA也需要人工干预。借助于重定位表也只能区分一部分数据(如跳转表)。幸好中、高级语言除非内联汇编外一般很少有代码、数据混合编程。
再说代码乱序变形引擎,个人觉得在防代码分析、防破解方面没有什么作用,老实说现在谁还完全靠静态分析?一般都是一边调式一边动态分析,那么什么乱序、变形都无法阻止分析,更无法防止破解,只是增加一点难度而已。
建议nooby有时间写代码乱序、变形引擎不如写VM引擎。相对来说,VM拥有更高的强度。
|
能力值:
( LV4,RANK:50 )
|
-
-
24 楼
你还真是无知啊
没办法
jr无知是正常的
|
能力值:
(RANK:210 )
|
-
-
25 楼
1.我无视VM。
2.你如果觉得VM足够强,怎么不叫老毛子把1.8降到1.2,速度还快些。
另外,这个文章大概你没看,整个过程就是兼容VM的,不多说了,cj时间到,不谈技术了。
|
|
|