首页
社区
课程
招聘
[旧帖] [原创][邀请码已发]加密解密第三版\2.1.4\TraceMe 0.00雪花
发表于: 2010-3-14 18:32 1643

[旧帖] [原创][邀请码已发]加密解密第三版\2.1.4\TraceMe 0.00雪花

2010-3-14 18:32
1643
【文章标题】: 加密解密第三版\2.1.4\TraceMe
【文章作者】: iEXE
【作者邮箱】: iexe2010@hotmail.com
【作者主页】: http://iexeiexe2010.spaces.live.com/default.aspx
【作者QQ号】: 603690023
【软件名称】: TraceMe
【软件大小】: -
【下载地址】: -
【加壳方式】: -
【保护方式】: -
【编写语言】: C
【使用工具】: OD
【操作平台】: win
【软件介绍】: -
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  俺刚来看雪,很菜,下面是俺的第一篇帖子
  ;跟踪至序列号验证例程
  0040133F      90            NOP
  00401340  /$  55            PUSH EBP
  00401341  |.  8B6C24 0C     MOV EBP,DWORD PTR SS:[ESP+C]
  00401345  |.  56            PUSH ESI
  00401346  |.  57            PUSH EDI
  00401347  |.  8B7C24 18     MOV EDI,DWORD PTR SS:[ESP+18]            ;  用户名长度
  0040134B  |.  B9 03000000   MOV ECX,3                                ;  循环计数
  00401350  |.  33F6          XOR ESI,ESI                              ;  清零
  00401352  |.  33C0          XOR EAX,EAX                              ;  清零
  00401354  |.  3BF9          CMP EDI,ECX
  00401356  |.  7E 21         JLE SHORT TraceMe.00401379               ;  不大于则跳
  00401358  |.  53            PUSH EBX                                 ;  保存EBX准备循环
  00401359  |>  83F8 07       /CMP EAX,7                               ;  循环取(0-7)位密钥
  0040135C  |.  7E 02         |JLE SHORT TraceMe.00401360              ;  
  0040135E  |.  33C0          |XOR EAX,EAX
  00401360  |>  33D2          |XOR EDX,EDX
  00401362  |.  33DB          |XOR EBX,EBX
  00401364  |.  8A1429        |MOV DL,BYTE PTR DS:[ECX+EBP]            ;  取第 ECX(大于等于3) 个用户名字符
  00401367  |.  8A98 30504000 |MOV BL,BYTE PTR DS:[EAX+405030]         ;  密钥第EAX个BYTE
  0040136D  |.  0FAFD3        |IMUL EDX,EBX                            ;  第ECX个用户名字符与第EAX位密钥乘
  00401370  |.  03F2          |ADD ESI,EDX                             ;  上述结果+ESI;(累加)
  00401372  |.  41            |INC ECX                                 ;  后一位 用户名
  00401373  |.  40            |INC EAX                                 ;  后一位 密钥
  00401374  |.  3BCF          |CMP ECX,EDI                             ;  第 3 至 用户名长度-1 次循环
  00401376  |.^ 7C E1         \JL SHORT TraceMe.00401359               ;  ---循环---
  00401378  |.  5B            POP EBX                                  ;  恢复EBX寄存器
  00401379  |>  56            PUSH ESI                                 ; /<%ld>
  0040137A  |.  68 78504000   PUSH TraceMe.00405078                    ; |Format = "%ld"
  0040137F  |.  55            PUSH EBP                                 ; |s
  00401380  |.  FF15 9C404000 CALL DWORD PTR DS:[<&USER32.wsprintfA>]  ; \wsprintfA
  00401386  |.  8B4424 1C     MOV EAX,DWORD PTR SS:[ESP+1C]            ;  指向输入的序列号的指针
  0040138A  |.  83C4 0C       ADD ESP,0C                               ;  未知
  0040138D  |.  55            PUSH EBP                                 ; /计算出的序列号转换后的字串
  0040138E  |.  50            PUSH EAX                                 ; |用户输入的序列号
  0040138F  |.  FF15 04404000 CALL DWORD PTR DS:[<&KERNEL32.lstrcmpA>] ; \lstrcmpA 比较字串
  00401395  |.  F7D8          NEG EAX                                  ;  对 EAX 取补 进位标志 置位
  00401397  |.  1BC0          SBB EAX,EAX                              ;  带进位减;
  00401399  |.  5F            POP EDI
  0040139A  |.  5E            POP ESI
  0040139B  |.  40            INC EAX                                  ;  +1
  0040139C  |.  5D            POP EBP
  0040139D  \.  C3            RETN
  0040139E      90            NOP
  
//发现有源码,不再分析了,注册机:
// trackme.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "windows.h"
#include "iostream"

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
        char key[] = {0x0c,0x0a,0x13,0x09,0x0c,0x0b,0x0a,0x08};
        int j = 0,r = 0;
        char szUserName[51];
        cout<<"Input The User Name:";
        cin>>szUserName;
        if (lstrlen(szUserName) < 5 )
        {
                cout<<"The Length of UserName must be greater than 4.\n";
                system("pause");
                return 1;;
        }
        for (int i = 3; i < lstrlen(szUserName); i ++)
        {
                if (j > 7) j = 0;
                r = r + *(szUserName + i) * key[j];
                j ++;
        }
        wsprintf(szUserName,"%ld",(unsigned int)r);

        cout<<"The Serial Number is:";
        cout<<szUserName;
        cout<<"\nOk...\n";
        system("pause");
        return 0;
}

--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2010年03月13日 15:56:32

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 75
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
刚看了源码,上面注册机不能验证汉字用户名,更正一下:

#include "stdafx.h"
#include "windows.h"
#include "iostream"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
        char key[] = {0x0c,0x0a,0x13,0x09,0x0c,0x0b,0x0a,0x08};
        int j = 0;
        UINT r = 0;
        char szUserName[51];
        cout<<"Input The User Name:";
        cin>>szUserName;
        if (lstrlen(szUserName) < 5 )
        {
                cout<<"The Length of UserName must be greater than 4.\n";
                system("pause");
                return 1;;
        }
        for (int i = 3; i < lstrlen(szUserName); i ++)
        {
                if (j > 7) j = 0;
                r = r + (BYTE)*(szUserName + i) * key[j];
                j ++;
        }
        wsprintf(szUserName,"%ld",(unsigned int)r);
        cout<<"The Serial Number is:";
        cout<<szUserName;
        cout<<"\nOk...\n";
        system("pause");
        return 0;
}
2010-3-14 21:56
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
为什么我就那么菜,头都看大了,哎,什么时候才有自己的创作!
2010-3-16 07:36
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
好好学习天天向上
2010-3-16 11:18
0
游客
登录 | 注册 方可回帖
返回
//