首页
社区
课程
招聘
[旧帖] [分享]千年 云鹤快手 逆向分析 0.00雪花
发表于: 2008-4-16 01:22 8043

[旧帖] [分享]千年 云鹤快手 逆向分析 0.00雪花

2008-4-16 01:22
8043
我是很喜欢千年这个游戏的,官方6月要开门,前几天闲的无聊找了个SF玩,现把云鹤快手逆向部分代码贴出。
   
    程序加了2层壳第一层是upx,第二层PEiD分析不出来,直接手脱的。

   云鹤快手.exe 这个程序启动以后主要是更新的,更新文件为3个ks.exe、sfconfig.dll、程序自身。
    然后启动ks程序,ks程序受到服务器列表之后有一个自检的call是自我检测的,如果发现程序被修改过则退出,直接nop掉00A3F03C处的代码就可以过。
00A3F037    E8 2A4A0000     call    00A43A66
00A3F03C    E8 7A6E0000     call    00A45EBB                         ; 收到数据以后的处理
00A3F041    E8 948E0000     call    00A47EDA
   
    点击ks里启动游戏以后下面几个函数比较重要,ks会把随机生成的名称记录在sfclient.mc文件里,ks关闭的时候会清理这些文件。
00A34541    E8 EE070000     call    00A34D34                         ; 产生随机名称-eax
00A34606    E8 29070000     call    00A34D34                         ; 生产文件名2
00A346CD    E8 406A0100     call    00A4B112                         ; 释放出客户端
00A346FF    E8 0E6A0100     call    00A4B112                          ; 释放出快手

    ks使用是CreateProcess启动快手程序,堆栈情况如下:
0012F800   00000000  |ModuleFileName = NULL
0012F804   0020ADE0  |CommandLine = """F:\Game\yh1000y\6ztdffd.cl"" 58.221.254.36 20155 11001 12001 {126,63,126,98,50,102,73,63} fwoyh6b.cl 591438"
0012F808   00000000  |pProcessSecurity = NULL
0012F80C   00000000  |pThreadSecurity = NULL
0012F810   00000000  |InheritHandles = FALSE
0012F814   00000000  |CreationFlags = 0
0012F818   00000000  |pEnvironment = NULL
0012F81C   00000000  |CurrentDir = NULL
0012F820   0012F840  |pStartupInfo = 0012F840
0012F824   0012F830  \pProcessInfo = 0012F830
    快手启动以后和ks联系取得许可证(这里有连接的时间限制),然后把它监听的端口写入sfks3.mc,监听端口从11001开始往后顺延。然后启动客户端,并把客户端启动以后快手要检测客户端的程序名称,如果名称不对则快手自动关闭。注意客户端只有第一次连接快手才能够被允许。

    破解思路如下:
    A.手动汇编改掉随机产生的两个文件名称的代码,改为两个固定的名称。nop掉往两个名称文件里写数据的部分,jump到启动程序部分。这种办法操作起来简单。
    B.有效的办法就是先把快手里面第一次连接的标志固定为从未连接,然后把这个快手加载到ks.exe里覆盖掉ks里原来的快手部分数据。然后把游戏的外挂加载到ks里原来客户段部分的数据。如此ok。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回