首页
社区
课程
招聘
[请勿新开主题!甲壳相关主题合并帖]
发表于: 2010-3-19 16:20 284745

[请勿新开主题!甲壳相关主题合并帖]

2010-3-19 16:20
284745
收藏
免费 0
支持
分享
最新回复 (781)
雪    币: 1173
活跃值: (2031)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
326
难做?没有为人创造价值的思想,没有让人花有所值怎么能做好事?

我在做对大家都有利的事,双赢
2011-1-4 22:46
0
雪    币: 238
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
327
以为是W哥。。。
2011-1-4 22:50
0
雪    币: 1556
活跃值: (310)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
328
下的是10.10.4的,标题写的是3,图片是11.01.04

好吧,我混乱了,难道这就是双CPU吗
2011-1-4 23:02
0
雪    币: 295
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
329
wuminshi
2011-1-4 23:23
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
330
也来个10w求破解。。。。。。。看看11年的新闻
2011-1-4 23:30
0
雪    币: 167
活跃值: (1574)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
331
貌似没有SDK哦 必须OD定位到地址 才能做数据混淆么 没有SDK用起来很麻烦的
模拟CPU实现的代码应该也是CPU来执行的吧 不知道模拟了那些门没有 丢一个Demo出来玩一下吧
2011-1-4 23:46
0
雪    币: 83
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
332
不懂,貌似很强大,顶一个
2011-1-5 00:00
0
雪    币: 375
活跃值: (12)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
333
更正一下,是wumingshi。
2011-1-5 00:13
0
雪    币: 1534
活跃值: (738)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
334
说的经典再怎么模拟也是CPU执行的
2011-1-5 00:31
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
335
我没有见到 数据混淆 哦

譬如我通过 甲壳3 偷掉了

原:

00401469                            8BE8             mov     ebp, eax
0040146B                            3BEB             cmp     ebp, ebx
0040146D                            0F84 77010000    je      004015EA

加壳后:

00401469                         jmp     dword ptr [0x400020]       被加密的地址,变成了这样偷掉的地方
0040146F                         add     byte ptr [eax], al
00401471                         add     byte ptr [eax], al

通过上面的那个跳来到

00970000                            8925 0C612C00    mov     dword ptr [0x2C610C], esp
00970006                            8B25 9C602C00    mov     esp, dword ptr [0x2C609C]
0097000C                            9C               pushfd
0097000D                            60               pushad
0097000E                            A1 0C612C00      mov     eax, dword ptr [0x2C610C]
00970013                            894424 0C        mov     dword ptr [esp+0xC], eax
00970017                            A1 F8602C00      mov     eax, dword ptr [0x2C60F8]
0097001C                            A3 24632C00      mov     dword ptr [0x2C6324], eax
00970021                            8B25 24632C00    mov     esp, dword ptr [0x2C6324]
00970027                            8BEC             mov     ebp, esp
00970029                            B8 A0602C00      mov     eax, 0x2C60A0
0097002E                            C700 00000000    mov     dword ptr [eax], 0x0
00970034                            B8 9C632C00      mov     eax, 0x2C639C
00970039                            C700 00000000    mov     dword ptr [eax], 0x0
0097003F                            B8 20282C00      mov     eax, 0x2C2820
00970044                            FFE0             jmp     eax        跟着这个 跳转来到了执行模拟段

进入后,二进制搜索    8A45D304018845D30FBE45D38A0D????????C0E90480E10F0FB6D13BC27D??

马上定位最终执行引擎

002C2F9F                            8A45 D3          mov     al, byte ptr [ebp-0x2D]
002C2FA2                            04 01            add     al, 0x1
002C2FA4                            8845 D3          mov     byte ptr [ebp-0x2D], al
002C2FA7                            0FBE45 D3        movsx   eax, byte ptr [ebp-0x2D]
002C2FAB                            8A0D 00632C00    mov     cl, byte ptr [0x2C6300]
002C2FB1                            C0E9 04          shr     cl, 0x4
002C2FB4                            80E1 0F          and     cl, 0xF
002C2FB7                            0FB6D1           movzx   edx, cl
002C2FBA                            3BC2             cmp     eax, edx                            ; 测试本次指令长度
002C2FBC                            7D 19            jge     short 002C2FD7
002C2FBE                            0FBE45 D3        movsx   eax, byte ptr [ebp-0x2D]
002C2FC2                            0FBE4D D3        movsx   ecx, byte ptr [ebp-0x2D]
002C2FC6                            8B15 98632C00    mov     edx, dword ptr [0x2C6398]
002C2FCC                            8A80 0E632C00    mov     al, byte ptr [eax+0x2C630E]         ; 取出 byte
002C2FD2                            88040A           mov     byte ptr [edx+ecx], al              ; 送入本次 字节
002C2FD5                          ^ EB C8            jmp     short 002C2F9F
002C2FD7                            6A 06            push    0x6
002C2FD9                            E8 02EDFFFF      call    <no_23>
002C2FDE                            A3 0C612C00      mov     dword ptr [0x2C610C], eax
002C2FE3                            8925 24632C00    mov     dword ptr [0x2C6324], esp
002C2FE9                            892D 44612C00    mov     dword ptr [0x2C6144], ebp
002C2FEF                            8B25 98602C00    mov     esp, dword ptr [0x2C6098]
002C2FF5                            61               popad
002C2FF6                            9D               popfd
002C2FF7                            8B25 0C612C00    mov     esp, dword ptr [0x2C610C]
002C2FFD                          - FF25 98632C00    jmp     dword ptr [0x2C6398]      此处为跳到执行的地方

002F0000                            3BEB             cmp     ebp, ebx          被偷取的代码,原封不动的被上面写入得地方,完全是被偷前的源码
002F0002                            90               nop
002F0003                            90               nop
002F0004                            90               nop
002F0005                            90               nop
002F0006                            90               nop
002F0007                            90               nop

上面的  002F0000  这里的执行代码的地址永远于此,除非被偷的代码执行完毕才会跳回原续地址

至此分析完毕,当然楼主可能不太认同的

这里完全是从分析角度来讨论,没有对甲壳存在任何意见
2011-1-5 00:44
0
雪    币: 306
活跃值: (85)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
336
LS..牛X...
2011-1-5 01:28
0
雪    币: 251
活跃值: (77)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
337
出来看看到底什么东西。模拟CPU这个说的挺邪乎的。等SE看完了,说不定要看看这个东西了

发个全保护的记事本类似的程序出来吧

10W就不要搞了。都11年了。搞11W吧。然后在里面搞个MD5算法,规定要破解掉才算过关。哈哈哈。直接1000W都没有问题。。
2011-1-5 01:46
0
雪    币: 279
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
338
"然后在里面搞个MD5算法,规定要破解掉才算过关" 大牛好幽默,这句类似的话貌似见过
2011-1-5 08:41
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
339
使用方便性还需要加强呀!也得让不太懂汇编的人去用啊!
2011-1-5 08:44
0
雪    币: 1556
活跃值: (310)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
340
终于看到y大的分析了,虽然依然找不到甲3,找到的甲2也不知道怎么用

不过还是内牛满面
2011-1-5 08:57
0
雪    币: 3728
活跃值: (2227)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
341
来看热闹了 呵呵
2011-1-5 09:07
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
342
兄弟,别笑我,俺绝对的菜鸟,所以没能写出什么东西来  
2011-1-5 09:08
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
343
保护大王1.0.2.0比较便宜才20元而己
2011-1-5 11:11
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
344
哦,对了,我刚才测试了将近 10 个程序,只有腾讯的一个 cm 加壳成功,(对 TX 无限膜拜啊 )

我写的 N 多 vc test 都是没动静的,2010 for vc 的直接加壳是 主程序 异常退出

如果,你运气好的话,竟然加壳成功,OK ,现在来说一下脱壳

脚本如下:

var dump
var e_ip
var men
var base
gmi eip,MODULEBASE
mov base,$RESULT
sub base,10000

loop:                     // 把低于基址的段,抢先注册,这招是以前从 FX 大侠处学来的
alloc 1000
mov men, $RESULT
cmp men,base
log men
jne loop

GPA "VirtualAlloc", "kernel32"
bp $RESULT
run
run
run
run
run
run
bc $RESULT
rtu
mov dump,eax
mov e_ip,eip
add e_ip,42
go  e_ip
find eip,#C20400CCCCCCCCCCCCCCCCCCCCCCCC#
mov e_ip,$RESULT
go e_ip
sto
find eip,#FF25????????5F5E5B8BE55DC20C00CCCCCC#
go $RESULT
sto
cmt eip," W 哥,到 OEP 了 O(∩_∩)O哈哈~"
msg "请手工搜索 执行引擎区段,手工补上后,修\r\n正一下入口的参数,DUMP 出吧 O(∩_∩)O哈哈~"

因为如果你运气好,加壳竟然真的通过的情况下,有一部分代码会在被分配的动态区段里执行的,所以要补上
这里就不多说了,现在的 甲壳3 我还没见到对  IAT 的加密,所以,跑到 OEP 时,还要修正一下参数后 dump 出来
先收工从原程序中 DUMP 出一份 IAT 表,用 2进制方式补回 dump 出的程序中
再把执行引擎区段补上就 OK 了

——————————————————

修正神马参数啊

这里举个例子,因为我就只能加一个 CM (其他都失败了 ),所以没能更多测试

00402FE0    3BC7            cmp     eax, edi
00402FE2    BB 0000FFFF     mov     ebx, FFFF0000
00402FE7    74 0D           je      short 00402FF6
00402FE9    85C3            test    ebx, eax
00402FEB    74 09           je      short 00402FF6
00402FED    F7D0            not     eax
00402FEF    A3 08C04000     mov     dword ptr [40C008], eax
00402FF4    EB 60           jmp     short 00403056
00402FF6    56              push    esi
00402FF7    8D45 F8         lea     eax, dword ptr [ebp-8]
00402FFA    50              push    eax

00402FFB    FF15 BC804000   call    dword ptr [<&KERNEL32.GetSystemT>; kernel32.GetSystemTimeAsFileTime       从这里被分离了
00403001    8B75 FC         mov     esi, dword ptr [ebp-4]

00402FE0                            3BC7             cmp     eax, edi
00402FE2                            BB 0000FFFF      mov     ebx, 0xFFFF0000
00402FE7                            74 0D            je      short 00402FF6
00402FE9                            85C3             test    ebx, eax
00402FEB                            74 09            je      short 00402FF6
00402FED                            F7D0             not     eax
00402FEF                            A3 08C04000      mov     dword ptr [0x40C008], eax
00402FF4                          - EB 60            jmp     short 00403056
00402FF6                            56               push    esi
00402FF7                            8D45 F8          lea     eax, dword ptr [ebp-0x8]
00402FFA                            50               push    eax
00402FFB                            FF               ???                                         ;引发异常,会跳到  403001 的
00402FFC                            15               ???                                         ; Command crosses end of memory block
00402FFD                            BC               ???                                         ; Command crosses end of memory block
00402FFE                            80               ???                                         ; Command crosses end of memory block
00402FFF                            40               inc     eax

于是把 402FEB 的 je 修改为 jne ( 因为402FED 至402FF4 处代码不会用到,正好利用一下 )

最终修改代码为

00402FE7                           /75 0D            jnz     short 00402FF6
00402FE9                           |56               push    esi
00402FEA                           |8D45 F8          lea     eax, dword ptr [ebp-0x8]
00402FED                           |50               push    eax
00402FEE                           |E8 0E000000      call    00403001             我们这里修改它的地址 (情人终于复合了)
00402FF3                           |90               nop
2011-1-5 11:18
0
雪    币: 410
活跃值: (214)
能力值: ( LV13,RANK:220 )
在线值:
发帖
回帖
粉丝
345
见到大牛,膜拜!!
2011-1-5 11:22
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
346
哦,最后一贴,甲壳3 之所以对程序加壳屡屡失败是没有处理好 运行完执行引擎后 的返回参数(地址)
并且在 地址处填下 如 401000 会报错(必须 00401000 的形式)

当然以楼主的神功下一个版本必定惊天地,泣鬼神,膜拜+期待
2011-1-5 11:26
0
雪    币: 1173
活跃值: (2031)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
347
兄弟的确有进步啊,OEP,这些很好找的,ESP定律就搞定了,还写脚本搞半天,模拟CPU是一个CPU,你没搞清楚CPU是怎么造的之前,没有官方的文档,你根本不知道程序是怎么运行的,中国能造CPU不?所以没有搞的清楚的,你分析的只是X86代码,INTEL的CPU,而不是模拟CPU,
2011-1-5 12:22
0
雪    币: 1173
活跃值: (2031)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
348
以后会加价的,下个版本出来后可能是30元。
2011-1-5 12:24
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
349
要脱壳的话,你那个动态区段申请的低于程序基址,hr esp 是不能顺利 DUMP 出完整代码的 (难道你不知道 )

对了,你那个模拟 CPU 请看我 24 楼的分析

就是把 opcode 搬到另一个地方执行 ,和你这种不懂逆向原理的人说话真累 ( 没有任何攻击成分,只是实话实说)

希望 甲壳以后能继续进步
2011-1-5 12:27
0
雪    币: 1173
活跃值: (2031)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
350
那个是DEMO,免费的不是正式的,正式的兼容性很高了,在那个版本后出了一百多个版本了,正式版要花一百元购买,绝对不让你的钱白花,是无数个不眠之夜搞出来的东西,没有强度敢吹牛么,又不是第一天来看雪。
2011-1-5 12:27
0
游客
登录 | 注册 方可回帖
返回
//