首页
社区
课程
招聘
[求助]RoBa进来帮忙看一下,下列代码如何写注册机?
发表于: 2004-12-7 16:57 4029

[求助]RoBa进来帮忙看一下,下列代码如何写注册机?

2004-12-7 16:57
4029
一程序已追出注册码,其算法如下,1eb0dce中的esi即是注册码的hex值。请问怎么写注册机啊?不想用keymaker的内存注册机,因为如下代码是被调用的dll文件,内存地址是动态的,用c语言怎么写?谢谢!

01ED0B3F     55                  push ebp
01ED0B40     8B5424 10           mov edx,dword ptr ss:[esp+10]
01ED0B44     8BEC                mov ebp,esp
01ED0B46     56                  push esi
01ED0B47     57                  push edi
01ED0B48     8345 14 34          add dword ptr ss:[ebp+14],34
01ED0B4C     83FA 01             cmp edx,1
01ED0B4F     7D 05               jge short 01ED0B56
01ED0B51     BA 01000000         mov edx,1
01ED0B56     8B7D 0C             mov edi,dword ptr ss:[ebp+C]
01ED0B59     8BCF                mov ecx,edi
01ED0B5B     8BC7                mov eax,edi
01ED0B5D     81E1 00E00700       and ecx,7E000
01ED0B63     25 001F0000         and eax,1F00
01ED0B68     C1E9 0D             shr ecx,0D
01ED0B6B     C1E8 08             shr eax,8
01ED0B6E     81C1 BC070000       add ecx,7BC
01ED0B74     6BC9 44             imul ecx,ecx,44
01ED0B77     69C0 F3000000       imul eax,eax,0F3
01ED0B7D     03C8                add ecx,eax
01ED0B7F     8BC7                mov eax,edi
01ED0B81     25 00007800         and eax,780000
01ED0B86     C1E8 13             shr eax,13
01ED0B89     69C0 08010000       imul eax,eax,108
01ED0B8F     8D3401              lea esi,dword ptr ds:[ecx+eax]
01ED0B92     8BCF                mov ecx,edi
01ED0B94     81E1 0000807F       and ecx,7F800000
01ED0B9A     81E7 FF000000       and edi,0FF
01ED0BA0     C1E9 0F             shr ecx,0F
01ED0BA3     8B45 14             mov eax,dword ptr ss:[ebp+14]
01ED0BA6     6BC0 07             imul eax,eax,7
01ED0BA9     03CF                add ecx,edi
01ED0BAB     6BC9 03             imul ecx,ecx,3
01ED0BAE     03C8                add ecx,eax
01ED0BB0     B8 01000000         mov eax,1
01ED0BB5     8D0C51              lea ecx,dword ptr ds:[ecx+edx*2]
01ED0BB8     8BD6                mov edx,esi
01ED0BBA     6BD2 1F             imul edx,edx,1F
01ED0BBD     03D1                add edx,ecx
01ED0BBF     8D0C75 00000000     lea ecx,dword ptr ds:[esi*2]
01ED0BC6     8BF2                mov esi,edx
01ED0BC8     81E6 FFFFFF7F       and esi,7FFFFFFF
01ED0BCE     3B75 08             cmp esi,dword ptr ss:[ebp+8]
01ED0BD1     74 0A               je short 01ED0BDD
01ED0BD3     03D1                add edx,ecx
01ED0BD5     40                  inc eax
01ED0BD6     83F8 32             cmp eax,32
01ED0BD9   ^ 7E EB               jle short 01ED0BC6
01ED0BDB     33C0                xor eax,eax
01ED0BDD     5F                  pop edi
01ED0BDE     5E                  pop esi
01ED0BDF     5D                  pop ebp
01ED0BE0     C2 1000             retn 10

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (3)
雪    币: 598
活跃值: (282)
能力值: ( LV13,RANK:330 )
在线值:
发帖
回帖
粉丝
2
我不是ROBA
去掉前面的地址,作为一个proc,先生命以下,带三个dword参数。写机时invoke XXXXproc, var1, var2, var3就行了。。

拼音真男收。。。
2004-12-7 17:27
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
3
我也不是ROBA
好像四个参数吧 +8+c+10+14
直接过一遍乱写了

void fun(DWORD* a,DWORD* b,DWORD* c,DWORD* d)
{
        DWORD i,j,k,l,m;
        *d += 0x34;
        m = *c;
       
        if (m<1) m=1;
       
        i=j=k= *b;
       
        i &= 0x7e000; i >>= 0x0d; i +=0x7bc; i *= 0x44;
        j &= 0x1f00; j >>= 0x08; j *= 0xf3;
        i += j;
        j = k;
        j &= 0x78000; j >>= 0x13; j *=0x108;
        l = i+j;
        i= k;
        i &= 0x7f8000; i>>=0xf;
        k &= 0xff;
        i += k;
        i *= 0x3;
        j = *d;
       
        j *= 0x7;
        i += j;
       
        j = 1;
        i = i + m*2;
        m = l; m *= 0x1f;
        m += i;
        i = l*2;
        do{
                l = m;
                l &= 0x7fffffff;
                if(l == *a) return;
                m += i;
                j++;
        }
        while(j<0x32);
          return;
}

结果是在edx里吗?
2004-12-7 17:56
0
雪    币: 265
活跃值: (430)
能力值: ( LV9,RANK:370 )
在线值:
发帖
回帖
粉丝
4
非常感谢二、三楼的朋友,我试一下看看。
2004-12-8 11:09
0
游客
登录 | 注册 方可回帖
返回
//