通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
文章搜索:
热门搜索:红客 黑鹰 红客技术 安全动画 红客培训
首页 文章 软件 动画 资源 励志 论坛 邮箱 会员 军事 科技 博客 爱心红客 最近更新 800g资源
 业内新闻 漏洞公告 病毒公告 电脑知识 网络知识 菜鸟入门 攻防教程 黑客攻防 安全编程 工具使用 综合安全 个人安全 安全相关 Q Q安全 原创精华 红客人物 站内事件
您现在的位置: 爱国者安全网 >> 文章类 >> 红客教程 >> 网络编程 >> 文章正文
破解StarForce之一:StarForce分析总览篇
责任编辑:水土不服   更新日期:2007-10-28
 

 

//我们对应一下:
004099DF  |.  C74424 1C 002>mov     dword ptr [esp+1C], 2000   ;  wndclass.style    
004099E7  |.  895424 20     mov     dword ptr [esp+20], edx    ;  wndclass.lpfnWndProc    
004099EB  |.  896C24 24     mov     dword ptr [esp+24], ebp    ;  wndclass.cbClsExtra      
004099EF  |.  896C24 28     mov     dword ptr [esp+28], ebp    ;  wndclass.cbWndExtra        
004099F3  |.  894424 2C     mov     dword ptr [esp+2C], eax    ;  wndclass.hInstance      
004099F7  |.  894C24 30     mov     dword ptr [esp+30], ecx    ;  wndclass.hIcon    
004099FB  |.  FF15 74278400 call    dword ptr [842774]         ;  wndclass.hCursor
//可以看的明白大家轮一轮到:)简单吧!
---------------------------------------------------------------*/
00409A24  |.  66:85C0       test    ax, ax
00409A27  |.  75 26         jnz     short 00409A4F
00409A29  |.  6A 53         push    53
00409A2B  |.  68 8C3F8A00   push    008A3F8C                         ;  ASCII "D:\PAL4\project\Sourcecode\RwCasing\rwc_Windows.cpp"
00409A30  |.  68 303F8A00   push    008A3F30                         ;  ASCII "FILE:  [%s]
LINE:  [%d]
INFO:  Error[rwcWindows::createWindows failed <RegisterClassEx>]
"
00409A35  |.  E8 F686FFFF   call    00402130
00409A3A  |.  50            push    eax                              ;  根据上面的文字就知道是要做什么了注册窗口了.
00409A3B  |.  E8 8089FFFF   call    004023C0
00409A40  |.  83C4 10       add     esp, 10
00409A43  |.  33C0          xor     eax, eax
00409A45  |.  5F            pop     edi
00409A46  |.  5E            pop     esi
00409A47  |.  5D            pop     ebp
00409A48  |.  5B            pop     ebx
00409A49  |.  83C4 30       add     esp, 30
00409A4C  |.  C2 1C00       retn    1C                               ;注册失败就从这里回家了
00409A4F  |>  8DBE 08010000 lea     edi, dword ptr [esi+108]         ;这里是干吗的呢?不知道了吧糊涂了吧!呵呵!
00409A55  |.  89AE 0C010000 mov     dword ptr [esi+10C], ebp
00409A5B  |.  55            push    ebp                              ;PUSH EBP说明这个函数只有一个参数,但是拿OD跟来看看,EBP=1或0
00409A5C  |.  892F          mov     dword ptr [edi], ebp             ;参数为1或0的就很少了,很有可能是BOOL性的参数,只有1和0的,当然
00409A5E  |.  8B0D 980E8E00 mov     ecx, dword ptr [8E0E98]          ;也有2的,可是这里用了两次,发现了么?两次说明了什么参数1和0的
00409A64  |.  8B2D 6C278400 mov     ebp, dword ptr [84276C]          ;结果不一样的,那我们看看什么函数需要一个参数,而且返回值却不同
00409A6A  |.  898E 10010000 mov     dword ptr [esi+110], ecx         ;用的几率最高的是那个呢?GetSystemMetrics,我怎么知道是它呢?
00409A70  |.  8B15 9C0E8E00 mov     edx, dword ptr [8E0E9C]          ;首先,这个时候用的最多的就是GetSystemMetrics,其次,SM_CXSCREEN
00409A76  |.  8996 14010000 mov     dword ptr [esi+114], edx         ;SM_CYSCREEN两个参数让它返回了不同的值,其次是一个参数,我们再验证一下
00409A7C  |.  FFD5          call    ebp                              ;如果,CreateWindowExA这个函数的长和宽没定那就肯定是了,要问为什么的
00409A7E  |.  6A 01         push    1                                ;只能说是需要多研究,经验了:)
00409A80  |.  FFD5          call    ebp
00409A82  |.  A1 F8088E00   mov     eax, dword ptr [8E08F8]
00409A87  |.  85C0          test    eax, eax
00409A89  |.  75 14         jnz     short 00409A9F
00409A8B  |.  8A4424 50     mov     al, byte ptr [esp+50]
00409A8F  |.  BD 00000A80   mov     ebp, 800A0000
00409A94  |.  84C0          test    al, al
00409A96  |.  74 09         je      short 00409AA1
00409A98  |.  BD 0000CA80   mov     ebp, 80CA0000
00409A9D  |.  EB 02         jmp     short 00409AA1
00409A9F  |>  33ED          xor     ebp, ebp
00409AA1  |>  6A 00         push    0                                ; /HasMenu = FALSE
00409AA3  |.  55            push    ebp                              ; |Style    这个函数是最不好估计的但是,幸好它没加密的,但是分析的话可以
00409AA4  |.  57            push    edi                              ; |pRect    从这几个参数入手,毕竟大家可以很容易的得到EDI是RECT类型指针
00409AA5  |.  FF15 68278400 call    dword ptr [842768]               ; \AdjustWindowRect 三个参数的RECT类函数就不多了,GetWindowsRect,GetClientRect
00409AAB  |.  8B46 68       mov     eax, dword ptr [esi+68]          ; 在窗口没创建之前用它们是不可能的,而FrameRect这类函数却很少见,最常见的
00409AAE  |.  8B8E 14010000 mov     ecx, dword ptr [esi+114]         ; 只有它了哦!可以根据参数数量和内容确定的
00409AB4  |.  8B96 10010000 mov     edx, dword ptr [esi+110]
00409ABA  |.  6A 00         push    0                                ; /lParam = NULL这个不用看了吧!注册这么长时间的窗口,还不创建要等到什么时候,
00409ABC  |.  50            push    eax                              ; |hInst        数数参数够,PUSH 0/PUSH EAX/PUSH 0符合CreateWindowExA函数的最后三个
00409ABD  |.  8B86 0C010000 mov     eax, dword ptr [esi+10C]         ; |             参数,PUSH 0就是lParam通常是NULL/PUSH EAX就是句柄/PUSH 0就是不要菜单,
00409AC3  |.  6A 00         push    0                                ; |hMenu = NULL 这类游戏程序要什么菜单当然是0了
00409AC5  |.  2BC8          sub     ecx, eax                         ; |
00409AC7  |.  6A 00         push    0                                ; |hParent = NULL
00409AC9  |.  8B4424 58     mov     eax, dword ptr [esp+58]          ; |             PUSH ECX 和PUSH EDX算算正好是长和宽的位置
00409ACD  |.  51            push    ecx                              ; |Height
00409ACE  |.  8B0F          mov     ecx, dword ptr [edi]             ; |
00409AD0  |.  2BD1          sub     edx, ecx                         ; |
00409AD2  |.  52            push    edx                              ; |Width
00409AD3  |.  6A 00         push    0                                ; |Y = 0        数数就是坐标嘛!
00409AD5  |.  6A 00         push    0                                ; |X = 0
00409AD7  |.  55            push    ebp                              ; |Style
00409AD8  |.  50            push    eax                              ; |WindowName    OD跟过来看到窗口标题没问题了肯定是CreateWindowExA
00409AD9  |.  53            push    ebx                              ; |Class
00409ADA  |.  6A 00         push    0                                ; |ExtStyle = 0
00409ADC  |.  FF15 64278400 call    dword ptr [842764]               ; \CreateWindowExA 
00409AE2  |.  85C0          test    eax, eax
00409AE4  |.  8946 6C       mov     dword ptr [esi+6C], eax
00409AE7  |.  75 0A         jnz     short 00409AF3
00409AE9  |.  5F            pop     edi
00409AEA  |.  5E            pop     esi
00409AEB  |.  5D            pop     ebp
00409AEC  |.  5B            pop     ebx
00409AED  |.  83C4 30       add     esp, 30
00409AF0  |.  C2 1C00       retn    1C
........................................省略吧!要这样下去什么时候才完呀!
恩!....下回给大家带来破解防拷的方法! 
我这里用的是PAL4的反汇编代码!下会我真的想和大家共享破解方法,但是我实在怕这样做会影响的仙剑正版,基本上都破了,也修的差不多了,现在只是BUG修复,还有就是我的破解不支持2003和VISTA.我真的为难了,发与不发一直在考虑,所以,我和大家都希望下会把破防拷的方法带给大家,但是我看了游侠论坛的朋友的意见,真的想留着自己玩了,至于我是否能够再发关于破防拷的文章,我也很难说,我现在很困惑了,如果,发了也许我从今以后都不会在破防拷了,也看不到仙5了.正如软星解散的时候说的一样:随缘!......
给大家一个我破的图:
001.JPG
                                                                 -By EasyStudy For PhantomNet
                                                                 2007 .9   .20

上一页  [1] [2] [3] [4] 

  • 上一篇文章:
  • 下一篇文章:
  • 最近更新
    固顶文章 爱国者安全网2007年度优秀版主评选
    普通文章 瑞星公司01月11日发布 每日计算机病毒及木马播报
    普通文章 破解博彩神助(专注彩票) V2.8.01
    推荐文章 推荐:跨站脚本执行漏洞代码的六点思路
    普通文章 Windows系统下的远程堆栈溢出 实战篇
    普通文章 Windows系统下的远程堆栈溢出 原理篇
    普通文章 MsSQLServer是如何加密口令的
    普通文章 浅谈国内的渗透评估过程
    普通文章 Dvbbs8.1 0DAY(通杀Access和mssql版本)
    普通文章 微软:我们的代码比赛门铁克更安全
    热门文章
    普通文章REAL蛀虫利用播放器漏洞下载恶意程序
    普通文章李彦宏:中国要在互联网领域逐渐超越美国
    普通文章马云:阿里巴巴的成功是一个生态链的成功
    普通文章Ingres用户认证非授权访问漏洞
    普通文章TCPreen FD_SET()函数远程栈溢出漏洞
    普通文章Winace UUE文件解压堆溢出漏洞
    普通文章Pclxav木马猎手第一代特征码引擎源代码
    普通文章IE收藏夹管理小精灵算法分析
    普通文章Extra Drive Pro算法分析历程
    普通文章雨过天晴自我注册
    精彩专题