首页
社区
课程
招聘
[求助]securom8.03脱壳后的一个问题
发表于: 2011-7-29 19:40 23422

[求助]securom8.03脱壳后的一个问题

2011-7-29 19:40
23422
我已经从某游戏的sr8壳程序的oep dump出来sr8,但对于程序自校验部分有点疑惑
在02B40BE6处有一个自校验,
02B40BE6    C74424 1C B2868>mov     dword ptr [esp+1C], 0E8A86B2
02B40BEE    C74424 18 44000>mov     dword ptr [esp+18], 20044
02B40BF6    896C24 14       mov     dword ptr [esp+14], ebp
02B40BFA    BD A00BB402     mov     ebp, 02B40BA0
02B40BFF    896C24 1C       mov     dword ptr [esp+1C], ebp
02B40C03    33ED            xor     ebp, ebp
02B40C05    8B7C24 1C       mov     edi, dword ptr [esp+1C]
02B40C09    8B3F            mov     edi, dword ptr [edi]
02B40C0B    33EF            xor     ebp, edi
02B40C0D    834424 1C 04    add     dword ptr [esp+1C], 4
02B40C12    66:FF4C24 18    dec     word ptr [esp+18]
02B40C17    90              nop
02B40C18  ^ 75 EB           jnz     short 02B40C05
02B40C1A    8BFD            mov     edi, ebp
其他的自校验都是只校验自己的,这个自校验不光校验自己,主线程也会校验这段自校验的代码。
hardcode主进程那个后,如果不在02B40C1A下断就正常的自校验失败, 显示未加载安全模块(就是说校验代码不动)。
而下断后却可以正常加载paul.dll显示sr8的主界面(按理说修改成int3应该自校验失败才对), 不清楚为什么?

还有GetCurrentProcessId和OpenEventA竟然没有遇到因为那个int3断就破解anti-dumps了,实在搞不清楚原因。。。。。
希望有人指点一下 QQ: 150247340.

因为主程序比较大无法附件所以希望有大大可以联系我一下。。。

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (23)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
漂亮!
2011-7-29 23:34
0
雪    币: 295
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
好像仙剑5,猜对了木
2011-7-30 00:55
0
雪    币: 217
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
= =, 那个问题差不多解决了。。。能跑出界面了, 就是anti-dumps太多了,也不知道目前dump的是不是完整的 = =。。。。(看某文说sr7的那个unpack是没有附加段的,比较memory map好像也是这样子。。。。。)
而且有一段巨长的stolen code,得写工具。。。。(已经写了一个临时的查看工具不过看了代码觉得很奇怪= =。。。)

本以为上追状态机可以追到代码,但那个结构一次又一次的copy啊,最后追到某离线激活状态机,ebx的内容如果一直hard-code到10h就success,不过还是过了PA模块的。。。PA模块还不知道在哪里= =,真没心情往上追了。。。。
028C1EB6    895C24 0C           mov     dword ptr [esp+C], ebx

还是请大大指点下啊。。。。这样跟不知跟到什么时候。。。。
2011-7-30 13:34
0
雪    币: 217
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
= =, 没人理么。。。。。。
目前在修那段乱跳的代码,写了一个工具修正,出来的代码能避免乱跳……
但理解上有障碍……难道这是传说中的扰乱引擎。。。。
2011-7-30 23:55
0
雪    币: 690
活跃值: (1821)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
6
楼主是如何过激活模块的,楼主写篇脱壳文章吧,skidrow破解组织利用激活漏洞直接可以激活,但是加了vmp,一直搞不明白。
2011-8-3 12:50
0
雪    币: 690
活跃值: (1821)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
7
楼主破解目标最好不要针对仙5,可以研究哥特4.
2011-8-3 12:51
0
雪    币: 204
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
找了很长时间,硬是没找到skidrow的作品,组织的主页也找不到。。。。
2011-8-5 09:48
0
雪    币: 217
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
- -, 我可能表意不清, 我目前脱了sr8的那层壳并且在解密vm而不是game的那层壳,如果脱了那个就没什么了。。。。。
。。。。等我搞定VM可能会把完整脱壳笔记发上来的。。。。
目前在写VM反汇编器。。。。。

0000c40[278b694, 3f]    mov4 %189, [%153]
0000c48[277cafb, 44]    add4 %153, 68h
0000c54[28868f0, a0]    mov4 %143, 1eh
0000c60[288c95e, e1]    expr %143
0000c68[28a94a2, 32]    mov4 %194, 36d873dh
0000c74[2814708, 37]    sub4 %194, 6bbah
0000c80[275e072, 96]    cmp4 %189, %194
0000c88[28a94a2, ec]    mov4 %13, 5678685eh
0000c94[28868f0, 14]    mov4 %14, 90c31234h
0000ca0[27d67ce, e1]    push %161
0000ca8[28447ab, 09]    push %193
0000cb0[27aef63, 95]    push %194
0000cb8[2792ed2, 9d]    push %101
0000cc0[2786c67, 5b]    push %169
0000cc8[2786c67, f4]    push %125
0000cd0[27f2583, 94]    push %153
0000cd8[2899a76, 31]    stvx    ; save v_curr state
0000ce0[2827e83, 6c]    xjmp %13        ; jmp to x86 code
0000ce8[27c6277, fb]    ldvx    ; load v_curr state
0000cf0[2898bb0, bf]    xmov %189, %eax ; xreg=1
0000cf8[2898bb0, 8a]    xmov %193, %ebx ; xreg=2
0000d00[2803639, e8]    xmov %194, %ecx ; xreg=3
0000d08[2869705, b5]    xmov %101, %edx ; xreg=4
0000d10[2898bb0, 5f]    xmov %169, %edi ; xreg=5
0000d18[2869705, 91]    xmov %125, %esi ; xreg=6
0000d20[27767e3, 6f]    xmov %153, %ebp ; xreg=7
0000d28[2809c07, f0]    sub4 %153, 74h
0000d34[28b0fe2, 2f]    add4 %153, d0h
0000d40[2780933, 42]    mov4 [%153], %125
0000d48[27f1df1, ae]    sub4 %223, 5ch
0000d54[2891b88, 01]    bgt 0072f8h     ; trigger, h=2795b6c, m=54, f=65a4
0000d64[2782a19, f2]    beq 006df4h     ; trigger, h=27e70ff, m=ad, f=6090        传递的api参数无效

00072f8[2795b6c, 54]    mov4 %0, %0
0007300[277d72b, c2]    mov4 %194, 4d238cach
000730c[27fd5a6, 44]    cmp4 %194, %189
0007314[27e1a93, f2]    bgt 0099e8h     ; trigger, h=27e70ff, m=ef, f=26d4
0007324[27e1a93, 39]    beq 0094e8h     ; trigger, h=27d3d26, m=ef, f=21c4

00009d0[2760a43, bb]    ldvx    ; load v_curr state
00009d8[27d9f2c, 78]    xmov %189, %eax ; xreg=1
00009e0[27ad1ff, 9e]    xmov %193, %ebx ; xreg=2
00009e8[2869705, d9]    xmov %194, %ecx ; xreg=3
00009f0[27727f2, eb]    xmov %101, %edx ; xreg=4
00009f8[2869705, 3c]    xmov %169, %edi ; xreg=5
0000a00[2803639, 35]    xmov %125, %esi ; xreg=6
0000a08[2803639, 93]    xmov %153, %ebp ; xreg=7
0000a10[2793c50, 72]    cmp4 %189, %167
0000a18[283c097, 43]    mov4 %13, 56786859h
0000a24[281c77c, 52]    mov4 %14, 90c31234h
0000a30[27aef63, c5]    push %189
0000a38[27ef71d, 71]    push %193
0000a40[288c6fa, d4]    push %194
0000a48[2786c67, 6f]    push %101
0000a50[27e4c25, 6c]    push %169
0000a58[27d13ef, 0f]    push %125
0000a60[275dabe, c1]    push %153
0000a68[27636de, bf]    stvx    ; save v_curr state
0000a70[27d3a13, b6]    xjmp %13        ; jmp to x86 code
0000a78[27c6277, 13]    ldvx    ; load v_curr state
0000a80[27ec896, 11]    xmov %189, %eax ; xreg=1
0000a88[27da302, 5e]    xmov %193, %ebx ; xreg=2
0000a90[2881a9f, 30]    xmov %194, %ecx ; xreg=3
0000a98[27ad1ff, 59]    xmov %101, %edx ; xreg=4
0000aa0[27778d1, 3e]    xmov %169, %edi ; xreg=5
0000aa8[2898bb0, 86]    xmov %125, %esi ; xreg=6
0000ab0[27da302, 4f]    xmov %153, %ebp ; xreg=7
0000ab8[289291e, 8c]    bne 00d330h     ; trigger, h=27c2354, m=61, f=c878
0000ac8[277d72b, 9c]    mov4 %125, 30e91bdh
0000ad4[27aa28b, 5f]    add4 %125, f663h
0000ae0[2819edc, 5f]    expr %125
0000ae8[27d13ef, ad]    push %189
0000af0[288c6fa, e7]    push %193
0000af8[278d1ce, e9]    push %194
0000b00[27d67ce, cd]    push %161
0000b08[27e4c25, cd]    push %169
0000b10[27d67ce, 3e]    push %161
0000b18[2792ed2, 47]    push %153
0000b20[2899a76, a4]    stvx    ; save v_curr state
0000b28[277d72b, 5f]    mov4 %143, 2908220h
0000b34[2872949, 2d]    xjmp %143       ; jmp to x86 code
0000b3c[2792cdd, fd]    ldvx    ; load v_curr state
0000b44[2869705, 0a]    xmov %189, %eax ; xreg=1
0000b4c[2758d29, c6]    xmov %193, %ebx ; xreg=2
0000b54[27ad1ff, f1]    xmov %194, %ecx ; xreg=3
0000b5c[2897de0, 86]    xmov %101, %edx ; xreg=4
0000b64[27767e3, f5]    xmov %169, %edi ; xreg=5
0000b6c[2869705, ed]    xmov %125, %esi ; xreg=6
0000b74[2758d29, b4]    xmov %153, %ebp ; xreg=7
0000b7c[275e072, 61]    cmp4 %189, %125
0000b84[27c570b, 3c]    mov4 %13, 56786859h
0000b90[277d72b, c2]    mov4 %14, 90c31234h
0000b9c[27e4c25, 41]    push %189
0000ba4[2786c67, 19]    push %193
0000bac[278d1ce, 93]    push %194
0000bb4[27ef71d, 8a]    push %101
0000bbc[27d13ef, a3]    push %169
0000bc4[2881877, 42]    push %125
0000bcc[275dabe, f2]    push %153
0000bd4[278eab0, 1a]    stvx    ; save v_curr state
0000bdc[27ca28a, ca]    xjmp %13        ; jmp to x86 code
0000be4[2792cdd, 51]    ldvx    ; load v_curr state
0000bec[27ec896, c0]    xmov %189, %eax ; xreg=1
0000bf4[2803639, 7a]    xmov %193, %ebx ; xreg=2
0000bfc[27d9f2c, b2]    xmov %194, %ecx ; xreg=3
0000c04[27da302, 37]    xmov %101, %edx ; xreg=4
0000c0c[27727f2, 21]    xmov %169, %edi ; xreg=5
0000c14[2869705, c2]    xmov %125, %esi ; xreg=6
0000c1c[27767e3, 29]    xmov %153, %ebp ; xreg=7
0000c24[279a4cc, 94]    bne 00d330h     ; trigger, h=27c2354, m=61, f=c70c
0000c34[27f02f3, f7]    add4 %153, 68h
0000c40[278b694, 3f]    mov4 %189, [%153]
0000c48[277cafb, 44]    add4 %153, 68h
0000c54[28868f0, a0]    mov4 %143, 1eh
0000c60[288c95e, e1]    expr %143
0000c68[28a94a2, 32]    mov4 %194, 36d873dh
0000c74[2814708, 37]    sub4 %194, 6bbah
0000c80[275e072, 96]    cmp4 %189, %194
0000c88[28a94a2, ec]    mov4 %13, 5678685eh
0000c94[28868f0, 14]    mov4 %14, 90c31234h
0000ca0[27d67ce, e1]    push %161
0000ca8[28447ab, 09]    push %193
0000cb0[27aef63, 95]    push %194
0000cb8[2792ed2, 9d]    push %101
0000cc0[2786c67, 5b]    push %169
0000cc8[2786c67, f4]    push %125
0000cd0[27f2583, 94]    push %153
0000cd8[2899a76, 31]    stvx    ; save v_curr state
0000ce0[2827e83, 6c]    xjmp %13        ; jmp to x86 code
0000ce8[27c6277, fb]    ldvx    ; load v_curr state
0000cf0[2898bb0, bf]    xmov %189, %eax ; xreg=1
0000cf8[2898bb0, 8a]    xmov %193, %ebx ; xreg=2
0000d00[2803639, e8]    xmov %194, %ecx ; xreg=3
0000d08[2869705, b5]    xmov %101, %edx ; xreg=4
0000d10[2898bb0, 5f]    xmov %169, %edi ; xreg=5
0000d18[2869705, 91]    xmov %125, %esi ; xreg=6
0000d20[27767e3, 6f]    xmov %153, %ebp ; xreg=7
0000d28[2809c07, f0]    sub4 %153, 74h
0000d34[28b0fe2, 2f]    add4 %153, d0h
0000d40[2780933, 42]    mov4 [%153], %125
0000d48[27f1df1, ae]    sub4 %223, 5ch
0000d54[2891b88, 01]    bgt 0072f8h     ; trigger, h=2795b6c, m=54, f=65a4
0000d64[2782a19, f2]    beq 006df4h     ; trigger, h=27e70ff, m=ad, f=6090

sr8_vm reg.vm 0 d330 27c2354 61
sr8_vm reg.vm 0 72f8 2795b6c 54

00072f8[2795b6c, 54]    mov4 %0, %0
0007300[277d72b, c2]    mov4 %194, 4d238cach
000730c[27fd5a6, 44]    cmp4 %194, %189
0007314[27e1a93, f2]    bgt 0099e8h     ; trigger, h=27e70ff, m=ef, f=26d4
0007324[27e1a93, 39]    beq 0094e8h     ; trigger, h=27d3d26, m=ef, f=21c4

sr8_vm reg.vm 0 99e8 27e70ff cc
sr8_vm reg.vm 0 94e8 27d3d26 cc

但几乎一个指令一个handler,而且每个指令的执行要依靠前一条指令的参数,追根溯源的方法用起来不方便。。。。。郁闷。。。。

s组的绕过估计是建立在正版KEY激活流程的分析和paul.dll对exe参数输入的基础上。。。。
但我没这个条件,只能硬解码vm.....
2011-8-6 13:32
0
雪    币: 217
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
目前vm指令解析的结果,有人能帮忙看看么,感激不尽。。。。
实在找不到突破口啊。。。。
上传的附件:
2011-8-7 19:28
0
雪    币: 217
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
没太有心情搞下去了,搞过的大神都不理我。。。。
vm反汇编器(比较简单但能解不少handler了- -,可以看看。。。)+代码修复(修正乱跳便于分析vm)的源代码在src.rar里,本来想用ade32引擎然后收集一些变形规则写一个像srom_cleaner的反混淆器(srom_cleaner处理后基本都不能运行,而且对sr8的处理效果不好),不过觉得这工程大了点就不写了。。
代码用tinyCC + nasm编译(所有编译工具都在代码包里, 用tcc纯粹是个人习惯, 本来想用gcc但突然发现我那个是arm版本的).
text是脱sr8文(因为很简单就仓促写了点。。。)+arteam的crc clean(本来想把这个实现在自己的反混淆器里的,最后理由同上。。。)。
上传的附件:
2011-8-8 22:29
0
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
12
哎, 楼主你写的跟天书似的,  看了半天我还没看明白你想干什么, 能不能简单的说?
就是想逆向 securom8的vm么?

ps:  如果是脱壳的话, 可以参考下几年前的一篇脱文,写的比较全面了:  http://bbs.pediy.com/showthread.php?t=52414
2011-8-9 13:09
0
雪    币: 217
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
搞定sr8的保护模块。。。或者无key绕过保护模块。。。
那篇有key脱game悬念很小的, 关键是目前我无法达到game的oep(因为无key根本就不会经过game的oep)。。。。
2011-8-9 14:22
0
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
14
这篇文章看过了么?
http://wenku.baidu.com/view/b5868fc789eb172ded63b7a9.html

研究激活的话, 貌似逆向那个paul.dll就可以了。 国内研究过securom的貌似不多, 资料也少得可怜,
最好去国外的论坛找找资料。

ps: 没有前人的经验,无从下手, 独自探索是比较痛苦的, 所以只能说祝你好运了。
2011-8-10 09:38
0
雪    币: 217
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
arteam的文章很早就拜读了....上边那个vm一部分就是基于arteam文章写的
paul.dll总体感觉是一个外壳而已,关键我没key所以只研究壳没多大用把,也许真有漏洞但没key应该发现不料。。。。。
= =, 基本把国外论坛翻了一遍,目前我都想给rld和skidrow发email, 但地址不是过期了就是找不到,郁闷。。。。
2011-8-10 10:34
0
雪    币: 244
活跃值: (105)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
16
你破解sr8的方向走的太过于艰苦,其实根本无需理会他的VM
只要找到突破口就很简单了,但是前提还是要有一个KEY,没有KEY的话实在是...
2011-8-12 03:50
0
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
17
LZ,我正在玩仙5,说实话我也有兴趣研究下Securom的壳,以前研究过一个,可惜没脱成功,http://bbs.pediy.com/showthread.php?t=93932&highlight=
这次想先通关,再研究一次,不弄个结果出来,感觉挺有挫败感的,LZ有消息再分享下啊,学习学习……
2011-8-12 10:20
0
雪    币: 217
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
感谢您的关注。
我想确认一个问题,就是在有key发现能绕过的情况下是不是只能针对一个game.
如果只针对一个game的话那么还是得逆向pa模块(因为我个人只是想搞清sr8的一个总体运作原理和crk思路, 并不是针对某一款具体的game搞出来玩玩);如果能通用的话恳请您的指点。

vm的确是没有用的,白费了我一星期,目前vm码几乎都能出来,但仔细看都是传参的。。。。

我在写反混淆器,很简单的配对,解的不是很彻底,因为没时间打造一个较完美的代码优化程序。
不过我时间不多了,估计没法放上来了……
2011-8-12 10:54
0
雪    币: 217
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
拜读过您的脱文, 受益匪浅。
不过还是希望有大神能指点一下sr的详细运作原理,这样大家对pa模块都有一个比较好的入手点....rld最终就没有动paul.dll直接完美计算key crk的,不过想联系上他们估计不太可能呵呵~(e-mail完全失效)
2011-8-12 11:16
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
呵呵,我不能说别的了,只能说你好强
2011-8-12 13:59
0
雪    币: 244
活跃值: (105)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
21
你可以只研究PA模块里的判断部分
PA里会调用EXE里的一段很长的VM片段来判断注册码是否正确
这个CALL很好找的,既然你已经对他的VM有研究了,不妨从这个CALL里着手
这个CALL好像返回1就是正确的注册码了
2011-8-13 02:31
0
雪    币: 217
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
paul.dll的那个call很好找,本来是返回7的,我让他返回1(或者返回0x10也可以)结果非法操作。。。。。
如果深入exe文件就会发现这个代码不是那么容易搞定的,具体来说;
那个7是靠跟周围的代码运算+xor一个常数得出的,往根源追的的分支语句有很多(都是加了混淆的,代码被切的很短,数量巨大,多的让你懒得分清哪里是分支, 哪里是被故意切开的)。。。。。。。。
--->sr8判断的方式
判断语句(例如cmp %a,%b)
pushfd
..... 一段垃圾代码或者是检验
popfd
mov [esp], 0xxxxxxxx
jz a
add [esp], 0xxxxxxxxx
2:add [esp], 0xxxxxxxc3 ->注意这个c3
jmp 到那个c3(即retn)

---->sr8切代码的方式
...(一段不超过30行的代码【可能是垃圾】)
mov [esp], 0xxxxxxxx
add [esp], 0xxxxxxxxx
2:add [esp], 0xxxxxxxc3 ->注意这个c3
jmp 到那个c3(即retn)

注意2那个xxxxxxc3如果jmp后会变形为
retn, 这时会将[esp]代码运算的结果作为返回地址(其实是跳转地址)

这是很难追踪的原因,即根本看不出距离的远近,如果手动的计算那些add值就是开10个计算器也不够用的,这就是我写反混淆引擎的初衷。。。。

当然总体感觉不光是那个1的问题(不过最终还是要解决那个01h的问题 ),因为那个01h也是搞代码运算得到的,而从哪里跳转到那里去的,这是一个很重要的问题。

而对于PA模块的请求在exe中的表现,对于pal5来说:
028BC32B    8D6424 FC       lea     esp, dword ptr [esp-4]     <-- 从这里设一个breakpoint, 观察ebx
对应的:
1        PA_REQUEST_GET_UL_REQUEST ---> 28BC5AE
2        PA_REQUEST_SET_UL_CODE ---> 028BC7D1

3        PA_REQUEST_EVAL_UL_CODE ---> 28BCB29
        28BCA93       
4        PA_REQUEST_SET_SERIAL ---> 28BCCF7
5        PA_REQUEST_GET_SERIAL ---> 28BCF8D
6        PA_REQUEST_GET_EXPIRY_INFO ---> 28BD08F
7        PA_REQUEST_GET_GRACE_INFO ---> 28BD334
8        PA_REQUEST_GET_IS_ONLINE ---> 28BD442
9        PA_REQUEST_ACTIVATE_ONLINE ---> 28BD6DE
A        PA_REQUEST_VERIFY_ONLINE ---> 28BD836
B        PA_REQUEST_IS_REGISTERED ---> 28BDB60
C        PA_REQUEST_INIT                --> 28BDEEE
D        PA_REQUEST_INIT                --> 28BDFD6
E        PA_REQUEST_GETLOGFILENAME ---> 28BE16A
F        PA_REQUEST_ENABLE_LOG ---> 28BE3ED
12        PA_REQUEST_SET_PADATA_UNLOCK ---> 28BE671

14        PA_REQUEST_GET_PADATA ---> 28BEA23
15        PA_REQUEST_GET_LICENSE ---> 28BEAE9
10        PA_REQUEST_UPDATE_PLAYTIME ---> 028BEC55
最后:
5        PA_REQUEST_GET_SERIAL ---> breakpoint这个28BCF8D地址,会一直来到。。。。。
028C34EF    C74424 14 000F8>mov     dword ptr [esp+14], 568A0F00   <-- 这里的eax就是07h
如果往上拉可以发现01h是success................暂时记录这些。。。
2011-8-13 14:05
0
雪    币: 217
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
这里再记录一下vm的问题(我实在研究不下去了= =, 权当给后来的大大记录下我走的弯路),
vm入口的代码为一段
push yyyy
call xxx
push xxxx
call  xx
而push进去的实际上是一个地址,如果追随会发现类似
xx xx xx xx  00 00 00 00  00 00 00 00  00 00 00 00
yy yy yy yy  00 00 00 00  00 00 00 00  00 00 00 00
把xx xx xx xx - yy yy yy yy的代码截出来使用我的vm_disasm进行研究就ok.
总体来说vm的代码功能为
传参
转换参数
xcall x86的代码  --> 这里
接收返回值
转换参数
xcall x86的代码

而这些x86的代码最终会被带到上面PA_REQUEST_xxxxxxxx的请求中, 所以vm代码只是一个障眼法,重点还是pa_request这组在exe中的部分
2011-8-13 14:38
0
雪    币: 217
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
- -,一块把那个很垃圾的反混淆发上来把
最重要的分支反混淆还没有实现。。。。。不过push ss, pop ss; pushfd这种anti-debug和一般的jmp能清理干净(注意要先清理checksum后再使用)。。。。。
sr8cleaner.rar

同样使用TinyCC编译(工具见前文的securom_src包内)
上传的附件:
2011-8-13 14:53
0
游客
登录 | 注册 方可回帖
返回
//