首页
社区
课程
招聘
C代码转化为VB6.0代码
发表于: 2006-9-19 01:25 5104

C代码转化为VB6.0代码

2006-9-19 01:25
5104
下面一段代码我看不懂,(呵呵,只会VB),请教大家,如何转化为VB6.0的代码?
谢谢大家帮助。
======================================================
void DataProcess(char *name,char *hdid,char *sn)
{
/*      
        name:用户名
        hdid:机器码
        sn:注册码
*/
        char buf[200];
        int hdidlen;
        int namelen;
        int len;
        char *p;
        hdidlen=strlen(hdid);
        namelen=strlen(name);
        memset(buf,0,sizeof(buf));
        memcpy((char *)&buf[100],hdid,hdidlen);
        memcpy((char *)&buf[76],name,namelen);
        strlwr((char *)&buf[76]);
        len =strlen((char *)&buf[100]);
        p=(char *)&buf[100];
        while(len<20)
        {
                BYTE num=(BYTE)(*p++);
                num+=(BYTE)*p;
                buf[100+len]=num;
                len++;
        }
        len=strlen((char *)&buf[76]);
        p=(char *)&buf[76];
        while(len<20)
        {
                BYTE num=(BYTE)(*p++);
                num+=(BYTE)*p;
                buf[76+len]=num;
                len++;
        }
        len=0;
        p=(char *)&buf[100];
        while(len<20)
        {
                BYTE tmp;
                BYTE num=(BYTE)(*p);
                _asm
                {
                        xor eax,eax
                        mov al,num
                        MOV ESI,EAX
                        MOV EAX,0x66666667
                        IMUL ESI
                        SAR EDX,0x2
                        MOV EAX,EDX
                        SHR EAX,0x1F
                        ADD EDX,EAX
                        MOV EAX,ESI
                        mov tmp,DL;
                        MOV ESI,0x0A
                        CDQ
                        IDIV ESI
                        INC ECX
                        mov num,DL;
                }
                *(p-44)=tmp;
                *(p-64)=num;
                p++;
                len++;
        }
        len=0;
        p=(char *)&buf[76];
        while(len<10)
        {
                BYTE num=(BYTE)p[len];
                BYTE num2=(BYTE)p[10+len];
                num=num^num2;
                p[len]=num;
                num2=num;
                num=p[34+len];
                num=num^num2;
                num2=p[24+len];
                num2=num2^num;
                p[24+len]=num2;
                len++;
        }
        len=0;
        p=(char *)&buf[36];
        while(len<20)
        {
                BYTE num=p[len];
                BYTE num2=p[num+64];
                num=p[len+20];
                num2=num+num2;
                p[len+88]=num2;
                len++;
        }
        len=0;
        p=(char *)&buf[124];
        while(len<20)
        {
                BYTE num=p[len];
                if(num<0x30)
                {
                        num+=0x30;
                        p[len]=num;
                }
                else if(num<=0x7a)
                {
                }
                else if(num>=0x30)
                {
                        num=num%0x4a+0x30;
                        p[len]=num;
                }
                len++;
        }
        len = strlen(p);
        memmove((char *)sn,p,len);
}
=================================================================

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
有可以互相转换代码的软件吗?
2006-9-22 18:10
0
雪    币: 161
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
PFC
3
这段代码不党是C还有汇编,你可以编译成SDK在调用。
2006-12-9 20:15
0
雪    币: 2943
活跃值: (1788)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
4
轻轻看一下,并不复杂的代码,内嵌一段ASM,也很简单。但是,你该知道,因为VB的数据类型问题,所以转换为VB的,有时需要转很多弯,并且都有可能转不过来。但是反过来,会很容易的。这是那个程序的Keygen源码?
还是不转的好。呵呵, 等于没说!
QQ:339171218
2006-12-9 20:52
0
雪    币: 367
活跃值: (20)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
最简单的方法:
用vc编译一个Dll,调用使用stdcall,把这个函数导出
void DataProcess(char *name,char *hdid,char *sn)
然后在VB程序里面声明,
Public Declare Sub DataProcessLib "somevcdll.dll" (ByVal name As String,ByVal hdid As String,ByVal sn As String)
VB编译器会在编译时自动创建ansi串用于零时交换,你应该保证相应缓冲足够.
2006-12-11 19:37
0
游客
登录 | 注册 方可回帖
返回
//