首页
社区
课程
招聘
[讨论]从底层用静态反汇编破解Hackshield(建议组群)
发表于: 2006-8-2 11:36 9037

[讨论]从底层用静态反汇编破解Hackshield(建议组群)

2006-8-2 11:36
9037
被Hackshield 这个东西困扰了好久,一直找不到有效的方法解决它,后来得到一位朋友的指点参照fsmars(街头篮球战神)的做法(不得不说写fsmars的programer是天才)dump出了 hackshield 的 作用域函数和main函数.

现在我研究的结果如下:

1.新版本的hackshield用了 1.35版本的ASProtect SKE 加壳
2.hackshield内部测试用软件包括speedhack,gamemaster,相对应的他们使用了memory detected 技术作为检测引擎CRC
3.新版本的hackshield增加了对Rootkit的检测功能,以前我可以通过Fu,对NTopenprocess进行SEH操作从而使hackshield无法检测出外挂.我通过修改rootkit代码已经成功的使hackshield无法检测出我使用的speedhack,但是在游戏中speedhack没有作用.- -;;;
4.关于Log file的解密,hackshield使用Blow fish对他的log file进行加密,大家可以使用ultraedit+脚本进行查看,log file包含 CPU 时间 游戏时间,...精确到小数点后8位!
5.底层驱动的问题,用process guard可以轻松搞定那个释放的driver.

待补充...

目前在用SI+IDA pro分析,还是那个BPX WriteProcessMemory源头的问题.
IDA 在某些方面很强 用过之后你会有意外的发现!!!^^

为了振兴中国的软件业大家一起beat韩国国营软件,建议有兴趣的朋友留下联络方式

QQ:13773304
MSN:....

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
补充下 谁有Isaiah 大大 和 shoooo 大大的联系方式?
希望各位的加入^^
2006-8-2 11:38
0
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
补充下,谁需要新版本的hackshield,请联系我,我在韩国的hacker网站上下载了新版本的(韩文)和部分头文件和cpp文件。希望大家参与讨论交流
2006-8-4 12:30
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
最初由 nsmile 发布
补充下,谁需要新版本的hackshield,请联系我,我在韩国的hacker网站上下载了新版本的(韩文)和部分头文件和cpp文件。希望大家参与讨论交流


这个东西应该不兼容98。HOOK一下内核函数,它喜欢释放驱动就让它释放,让它跑都可以,不过也是百搭。
2006-8-4 12:35
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
5
最初由 nsmile 发布
补充下,谁需要新版本的hackshield,请联系我,我在韩国的hacker网站上下载了新版本的(韩文)和部分头文件和cpp文件。希望大家参与讨论交流


贴出来让偶学习学习
看看和偶逆的差多少
2006-8-4 12:40
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
6
最初由 鸡蛋壳 发布
这个东西应该不兼容98。HOOK一下内核函数,它喜欢释放驱动就让它释放,让它跑都可以,不过也是百搭。


我也觉得应该不兼容98,不过它里面有vxd文件的,我没试过,应该问问某人
2006-8-4 12:41
0
雪    币: 184
活跃值: (108)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
7
对这个没有研究,干看的份.贴CPP出来看看.学习中
2006-8-4 12:45
0
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
先贴个HsCrypt_File

// 基敲 橇肺弊伐.
DWORD __stdcall _HsCrypt_FileFDecBlock( IN LPCTSTR lpszInputFile,                        //[in] 汗龋拳且 颇老版肺
                                                                            IN PBYTE pbyInitKey,
                                                                            IN LONG lOffset,                                        //[in] 颇老 坷橇悸
                                                                                IN DWORD dwDecSize,                                 //[in] 汗龋拳且 荤捞令
                                                                                IN UINT nOrigin)                                        //[in] ORIGIN
{
        DWORD dwRet = ERROR_SUCCESS;
        DWORD dwReadLen = 0;

        // 鞘夸茄 农扁父怒狼 荤捞令甫 且寸茄促.
        BYTE        byPlainBuf[1000000] = { 0, };
        TCHAR        szTmpBuf[256] = { 0, };
        FILE *InputStream = 0, *TmpStream = 0;
        HSCRYPT_KEYINFO HsKeyInfo;
       
        __try
        {
                ASSERT ( lpszInputFile != NULL );

                if ( lpszInputFile == NULL || dwDecSize < 0 )
                {
                        return ERROR_HSCRYPTLIB_FILEFDECBLK_INVALIDPARAM;
                }

                // 佬扁 鼻茄苞 官捞呈府 葛靛肺 颇老坷锹
                // translations involving carriage-return and linefeed characters are suppressed.
                InputStream = _tfopen( lpszInputFile , "rb" ) ;
                if ( InputStream == NULL )
                {
                        dwRet = GetLastError ();
                        return ERROR_HSCRYPTLIB_FILEFDECBLK_FOPEN;
                }

                // 漂沥何盒何磐 佬阑锭.
                // 颇老阑 贸澜何磐 佬栏妨搁 lOffset俊 0阑 且寸窍绊, orgin俊 SEEK_SET阑 且寸茄促.
                //#define SEEK_CUR    1
                //#define SEEK_END    2
                //#define SEEK_SET    0
                if( nOrigin == 1 )
                {
                        dwRet = fseek( InputStream, lOffset, SEEK_CUR );
                }
                else if( nOrigin == 2 )
                {
                        dwRet = fseek( InputStream, lOffset, SEEK_END );
                }
                else if( nOrigin == 0 )
                {
                        dwRet = fseek( InputStream, lOffset, SEEK_SET );
                }

                if ( dwRet != NULL )
                {
                        return ERROR_HSCRYPTLIB_FILEFDECBLK_FILESEEK;
                }

                // 鞠汗龋拳 虐蔼 汲沥.
                memcpy( HsKeyInfo.byInitKey, pbyInitKey, HSCRYPTLIB_INITKEY_SIZE );

                // 鞠汗龋拳 檬扁拳.
                dwRet = _HsCrypt_InitCrypt ( &HsKeyInfo );                                               
                if( dwRet != ERROR_SUCCESS )
                {
                        return ERROR_HSCRYPTLIB_FILEFDECBLK_INITCRYPT;
                }

                // 颇老备炼眉 器牢磐甫 捞侩窍咯 盔窍绰 喉钒父 汗龋拳饶 滚欺肺 免仿
                // 颇老傈眉甫 汗龋拳 窍妨搁 颇老荤捞令甫 涝仿茄促.
                // 捞锭 汗龋拳等 滚欺 荤捞令绰 涝仿等 汗龋拳且 荤捞令焊促 目具 茄促.
                dwRet =  _HsCrypt_FRead ( byPlainBuf,                                        // [out] 汗龋拳等 滚欺
                                                               dwDecSize,                                        // [in] 汗龋拳且 荤捞令               
                                                                  InputStream,                                        // [in] 佬阑 颇老器牢磐
                                                                  HsKeyInfo.AesDecKey,                 // [in] 汗龋拳 虐
                                                                  &dwReadLen );                        //[out] 汗龋拳等 荤捞令
                if ( dwRet != NULL )
                {
                        return ERROR_HSCRYPTLIB_FILEFDECBLK_FREAD;
                }

                // 汗龋拳瞪 颇老疙 积己.
                _stprintf(szTmpBuf, _T("%s.dec"), lpszInputFile );

                // 静扁 鼻茄苞 官捞呈府 葛靛肺 汗龋拳瞪 颇老 坷锹
                TmpStream = _tfopen( szTmpBuf, "wb+" ) ;
                if ( TmpStream == NULL )
                {
                        return ERROR_HSCRYPTLIB_FILEFDECBLK_FOPEN;
                }

                // 汗龋拳茄 郴侩阑 file俊 利绰促.
                dwRet = fwrite ( byPlainBuf, 1, dwReadLen, TmpStream );
                if ( dwRet < dwDecSize )
                {
                        return ERROR_HSCRYPTLIB_FILEFDECBLK_FWRITE;
                }

                dwRet = ERROR_SUCCESS;
        }

        __finally
        {
                if ( InputStream )
                {
                        fclose ( InputStream );
                        InputStream = NULL;
                }

                if ( TmpStream )
                {
                        fclose ( TmpStream );
                        TmpStream = NULL;
                }
        }

        return dwRet;
}

多参考那个log files里面的内容 你会有很大的收获的.
shoooo大大有联系方式没?
2006-8-4 16:11
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
9
打包一下都贴出来吧
2006-8-4 16:13
0
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
10
关注~~~,正在被驱动困扰.
那个驱动应该是管CreateProcess后,解密PE文件的
可惜所有分析都在学校。家里的电脑上什么都没有。
2006-8-4 23:18
0
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
11
28391221
2006-8-4 23:26
0
雪    币: 5
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
12
mark

战神那帮人我比较崇拜,不是一般角色
2006-8-5 01:59
0
雪    币: 5
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
13
不过说实话,游戏要检测出是否在用外挂还是超级easy的。
保护软件有点郁闷越来越强,这方面的信息有比较保密,明显有点根不上
2006-8-5 02:04
0
游客
登录 | 注册 方可回帖
返回
//