Nisy 发表于 2009-6-25 04:05:49

Alawar游戏公司加密简单分析

Homepage:http://www.alawar.com/

看到ZeNiX大哥 对这个公司的游戏比较感兴趣 论坛上还发布了改公司的几个补丁 所以下载分析下

分析对象是 Farm Frenzy 2 :http://www.alawar.com/game/farm-frenzy-2/


Aspr的壳脚本脱一下 程序有时间限制 启动时候有NAG 官方忽悠说 程序为Demo版 好像是keyfile来进行验证的 (网络验证的)

所以 目标首先干掉启动时的NAG

BP DialogBoxParamW然后返回返回 过一会就可以看到一些字符串提示等等 最终重新加载 在这里下断点:

1001993E    E8 DD8BFEFF   call    10002520
10019943    83F8 FF         cmp   eax, -1
10019946    0F95C0          setne   al
10019949    A2 61BD0610   mov   byte ptr , al
1001994E    3AC3            cmp   al, bl
10019950    74 07         je      short 10019959
10019952    C605 60BD0610 0>mov   byte ptr , 1   ; 这里是关键值 / 最后推出来的

……

100199E4    E8 9E83FFFF   call    10011D87                   ; 这里必须要跳
100199E9    84C0            test    al, al
100199EB    75 62         jnz   short 10019A4F

--------------------------
跟进 call    10011D87

10011D99    B0 01         mov   al, 1修改一下
10011D9B    C3            retn
10011D9C    C3            retn
--------------------------


这样程序就可以启动了 没有NAG了 但是进入程序后 直接弹出另一个NAG 方法相同 继续定位:

100195D5    803D 60BD0610 0>cmp   byte ptr , 0
100195DC    0FB605 61BD0610 movzx   eax, byte ptr
100195E3    8B0D E0BC0610   mov   ecx, dword ptr ; wrapper.1006BD68
100195E9    50            push    eax
100195EA    74 06         je      short 100195F2             ; 若不跳 则代表未注册
100195EC    E8 BAE4FFFF   call    10017AAB
100195F1    C3            retn
100195F2    E8 75E3FFFF   call    1001796C
100195F7    C3            retn

大致就是上边的这个地方 通过 cmp   byte ptr , 0 指令 得出该全局变量代表程序是否已注册

跟进call 1001796C

1001796C    56            push    esi                        
1001796D    8BF1            mov   esi, ecx
1001796F    E8 85E5FFFF   call    10015EF9                   ; (kernel32.CreateThread)
10017974    8B0E            mov   ecx, dword ptr
10017976    E8 DC2A0000   call    1001A457                   ; 进入看看
1001797B    84C0            test    al, al
1001797D    74 24         je      short 100179A3             ; 这里不能跳
1001797F    6A 00         push    0
10017981    8BCE            mov   ecx, esi
10017983    E8 3BADFFFF   call    100126C3                   ; 这个CALL很** 不要进去轻易修改
10017988    84C0            test    al, al
1001798A    74 7D         je      short 10017A09             ; JMP

---------------------
进入call 1001A457 看看

1001A457    A0 A0C00610   mov   al, byte ptr
1001A45C    C3            retn
---------------------

莫非这个是网络验证返回值 ?

1001D50F    E8 BC40FEFF   call    100015D0
1001D514    A1 24A20410   mov   eax, dword ptr
1001D519    8038 00         cmp   byte ptr , 0
1001D51C    0F95C0          setne   al
1001D51F    A2 A0C00610   mov   byte ptr , al

好像是有网络验证参与 但不太确定 猜的 ~猜这里代表是否连网或者已成功激活

所以最终的修改方案:
01、1001D519    8038 00         cmp   byte ptr , 0// 1
02、10019950    74 07         je      short 10019959   // JMP
03、10011D9B    MOV AL,1


没深入去搞了 简单跟了下流程 有兴趣的朋友可以看一下 游戏挺好玩 ~

Nisy 发表于 2009-6-25 05:08:42

这个公司系列的加密基本上都类似 我看ZeNiX是修改的exe主程序 这个不知道是如何修改的

zenix 发表于 2009-6-25 09:20:20

原帖由 Nisy 于 2009-6-25 05:08 发表 https://www.chinapyg.com/images/common/back.gif
这个公司系列的加密基本上都类似 我看ZeNiX是修改的exe主程序 这个不知道是如何修改的

我沒修改主桯序, 我發佈的主程序, 是我自己寫的. 其實並不是補丁.
所以運行我的主程序之後, 是直接進入游戲畫面,
所以啟動和退出都不會有底下這個畫面.



[ 本帖最后由 zenix 于 2009-6-25 09:34 编辑 ]

zenix 发表于 2009-6-25 09:33:39

補充一下, 其實不必破解也可以.
它的試用時間 (一般是 60 minutes), 是寫在注冊表裡的.
你直接把那值改大一點就好了. 一般來說, 改成 1000 個小時, 肯定夠了.

small-q 发表于 2009-6-25 09:49:26

:loveliness: 我玩过几个SEX相关的

鹭影依凌 发表于 2009-6-25 09:59:06

http://www.reflexive.com/
两类加密
FFF有个注册机
一种是UNPACK
一种是PATCH

sdprtf 发表于 2009-6-25 10:25:44

国外的这类游戏一般都有很大的漏洞!

ljfu 发表于 2009-6-25 14:49:05

路过,注意了.

冷血书生 发表于 2009-6-25 22:46:49

看不懂,沒資格討論了!

Nisy 发表于 2009-6-26 07:27:44

原帖由 zenix 于 2009-6-25 09:20 发表 https://www.chinapyg.com/images/common/back.gif


我沒修改主桯序, 我發佈的主程序, 是我自己寫的. 其實並不是補丁.
所以運行我的主程序之後, 是直接進入游戲畫面,
所以啟動和退出都不會有底下這個畫面.

45009

/:good猜到了 O(∩_∩)O哈哈~ 有时间我也研究一下调用时的传参 有问题再向老兄请教
页: [1] 2
查看完整版本: Alawar游戏公司加密简单分析