WPE|52wpe|我爱WPE

 找回密码
 注册会员
搜索
  • 1899查看
  • 0回复

主题

好友

1254

积分

金牌会员

发表于 2009-7-9 16:23:55 |显示全部楼层
网络上有关“打狗”的文章很多,也不乏诸多的“软件模拟狗”。看到一些打狗的注册用户数控制,从2个

用户~9999个用户~21亿个用户,心里感到很是不塌实,于是就专门以“注册用户数控制”为题,下载了几个

不同的“软件模拟狗”,开始跟踪。

几个下载的“软件模拟狗”,脱壳修正后测试,有的仅简单的打了一个补丁,有的甚至修改了一、二个跳转

,就认为是打“狗”了,完全没有按照“狗”的流程运行,又没有恢复“狗”内的数据,所以,就放弃了这

类“软件模拟狗”的测试。

其中有一个“软件模拟狗”的“狗”内的数据恢复的不错,与原版比较,除恢复“狗”内的数据外,基本上

没有发现修改跳转,就以这个进行测试跟踪。

“软件模拟狗”一般都加上一些猛壳来保护,脱壳过程从略。

OD载入脱壳修正的文件,F9运行。

这个软件,除在关于中能看到一些用户数数据外,在字符串、内存中都无法得到需要的敏感字符,所以,就

很难下断。还好通过插件找到ASCII "all",就拿它下断了。

//////////////////////////////////////////////////////////////////////////////////////////////
==检查用户数设置==
00434CA4  |.  50              push eax                          ; /Arg1 = 0012F780
00434CA5  |.  E8 AAE2FFFF    call un_SDE3S.00432F54            ; \un_SDE3S.00432F54
00434CAA  |.  59              pop ecx
00434CAB  |.  83C0 04        add eax,4
00434CAE  |.  8945 D4        mov dword ptr ss:[ebp-2C],eax
00434CB1  |.  8D45 08        lea eax,dword ptr ss:[ebp+8]
00434CB4  |.  8B4D D4        mov ecx,dword ptr ss:[ebp-2C]
00434CB7    8B55 0C          mov edx,dword ptr ss:[ebp+C]      ; 用户数[ebp+C]-->edx
========================================
堆栈 ss:[0012F7C8]=00000002  //用户数
edx=03277960                  //写到地址
========================================
00434CBA    8951 0C          mov dword ptr ds:[ecx+C],edx      ; edx用户数-->[ecx+C]
========================================
edx=00000002                  //用户数
ds:[03277980]=00000003        //写到地址
========================================
//////////////////////////////////////////////////////////////////////////////////////////////
==关于中检查用户数==

当我们从帮助--->关于中查看时,软件又从这里检查确认用户数。

00434F8F  |.  51              push ecx                          ; /Arg1
00434F90  |.  E8 BFDFFFFF    call un_SDE3S.00432F54            ; \un_SDE3S.00432F54
00434F95  |.  59              pop ecx
00434F96  |.  83C0 04        add eax,4
00434F99  |.  8945 D0        mov dword ptr ss:[ebp-30],eax
00434F9C  |.  837D 0C 00      cmp dword ptr ss:[ebp+C],0
00434FA0  |.  74 0B          je short un_SDE3S.00434FAD
00434FA2  |.  8B45 D0        mov eax,dword ptr ss:[ebp-30]
00434FA5  |.  8B4D 0C        mov ecx,dword ptr ss:[ebp+C]
00434FA8  |.  8B50 0C        mov edx,dword ptr ds:[eax+C]      ;  [ebp+C]=用户数
==========================================
ds:[03277980]=00000002        //用户数
edx=03277960                  //写到地址
==========================================
00434FAB  |.  8911            mov dword ptr ds:[ecx],edx
==========================================
edx=00000002                  //用户数
堆栈 ds:[0012F734]=00000000    //内存地址
==========================================
//////////////////////////////////////////////////////////////////////////////////////////////

根据字符串"all",搜索到这里,在0042689C下断。

0042689C    E8 23770500      call SDE3Serv.0047DFC4            ; 这里恢复狗数据。
004268A1    50                push eax
004268A2    8D85 60FFFFFF    lea eax,dword ptr ss:[ebp-A0]
004268A8    66:C785 0CFFFFFF>mov word ptr ss:[ebp-F4],194
004268B1    BA 35C74800      mov edx,SDE3Serv.0048C735        ; ASCII "all"
......
00656C39    8A4424 04        mov al,byte ptr ss:[esp+4]        ; [esp+4]=用户数
00656C3D    E8 0C72F9FF      call SDE3Serv.005EDE4E            ; F7进入
00656C42    5A                pop edx
......
005EDE4E    /0F83 2E4A0500    jnb SDE3Serv.00642882
005EDE54    |0F82 0FD20200    jb SDE3Serv.0061B069
005EDE5A    |9C                pushfd
......
0047D8CD    E8 4EE0FFFF      call SDE3Serv.0047B920            ; F7进入
0047D8D2    83C4 0C          add esp,0C
0047D8D5    EB 01            jmp short SDE3Serv.0047D8D8
0047D8D7    24 59            and al,59
0047D8D9    5A                pop edx
0047D8DA    5D                pop ebp
0047D8DB    C3                retn
......
F8步进,大循环过程从略。
这里需要耐心,都是跳来跳去。
----------------------------------------------------------------------------------------------
在00656C39,F9三次,得到:
0047B9C6    F3:A4            rep movs byte ptr es:[edi],byte ptr ds:[esi]    ; [esi]=用户数
0047B9C8    33C0              xor eax,eax
0047B9CA    5F                pop edi
0047B9CB    5E                pop esi
0047B9CC    C3                retn

==========================================================================
0012FDBC    00000000
0012FDC0    00481850  SDE3Serv.00481850
0012FDC4    0047D8D2  返回到 SDE3Serv.0047D8D2 来自 SDE3Serv.0047B920
==========================================================================

==========================================================================
ecx=00000001 (十进制 1.)
ds:[esi]=[004A81E8]=02
es:[edi]=stack [0012FDFC]=00
==========================================================================
在数据窗口跟随[edi]
===========================================================================
004A81E8  02 02 02 02 02 02 02 02 00 00 00 00 00 00 00 00  ........
===========================================================================
呵呵,原来藏在这里了。
修改02为16进制的>FF=255任意数为用户数。

快速发帖

您需要登录后才可以回帖 登录 | 注册会员

手机版|Archiver|WPE|52wpe|我爱WPE ( 闽ICP备15009081号 )

GMT+8, 2024-5-21 10:32 , Processed in 0.064073 second(s), 16 queries .

返回顶部