首页 网络安全 安全学院 查看内容

软件模拟加密狗的用户数控制跟踪笔记

2009-5-10 00:18 675 0

摘要:   网络上有关“打狗”的文章很多,也不乏诸多的“软件模拟狗”。看到一些打狗的注册用户数控制,从2个   用户~9999个用户~21亿个用户,心里感到很是不塌实,于是就专门以“注册用户数控制”为题,下...
关键词: nbsp 用户数 00434 0047 dword ptr SDE ebp edx Serv

  网络上有关“打狗”的文章很多,也不乏诸多的“软件模拟狗”。看到一些打狗的注册用户数控制,从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任意数为用户数。
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部