读书人

大牛们来挑战一下! 高分邀请大牛!

发布时间: 2012-04-17 15:06:33 作者: rapoo

大牛们,来挑战一下! 高分邀请大牛!

C/C++ code
/*2010-10-11群招人享受编程乐趣 挑逗人类阴暗的一面  追求一流的技术 享受下流的乐趣  论点 WINDOWS下的 外挂 病毒 驱动如果随便加入 那么很多人都来占位置   就没多少意思了  所以弄道简单的题目 欢迎大家尝试 进群讨论*///群号以字符串的形式放在str中传入函数GetNumber//结果输出:ff 4c 9f 67 72 50 bb int GetNumber(char* str)  {      char  dstr[8]={0};    __asm{        MOV  ESI,str            LEA  EDI,dstr            XOR  EAX,EAX            MOV  EDX,1234ABCDH            MOV  ECX,7goon:        MOV AL,BYTE PTR [ESI]        INC ESI            XOR  AL,DL            STOS BYTE PTR [EDI]        ROR  EDX,3            DEC  ECX            TEST ECX,ECX            JE   end            jmp goonend:    }    for(int i=0;i<7;i++)        printf("%x ",dstr[i]&0xFF);    printf("\n ");    return 0;}int main(){    char str1[]="1111111";    //算出正确的群号就可以进入群!进群标识CSDN(已算出!)         GetNumber(str1);    system("pause");        return 0;}


[解决办法]
可以回复。。。。
[解决办法]
不是大牛。。。。
[解决办法]
In:"1111111"
print:fc 48 9e 64 7b 58 bc
[解决办法]
C/C++ code
while (true) {    cin >> str1;    GetNumber(str1);    cout << endl;}
[解决办法]
哈哈,取巧

只要把“0000000”,“1111111”。。。“9999999”这十个字符串弄到里面试一下,出来的数字对得上那个位那么就是那个数了
[解决办法]
估计很快就和谐了
[解决办法]
此题以告破
[解决办法]
群里有什么东东 。。。。
[解决办法]
yyykkk
[解决办法]
yyykkk
[解决办法]
加了,搞汇编的哇,我喜欢:)
[解决办法]
1025674
[解决办法]

[解决办法]
7楼的方法无疑是最巧妙的。
[解决办法]
前2后6中2,知道也没啥关系~
[解决办法]
题目很简单,但是我关心的是群里有没有牛人。
[解决办法]
有意思
[解决办法]
移位异或?
11001101^11111111=00110010=2
01111001^01001100=00110101=5
10101111^10011111=00110000=0
01010101^01100111=00110010=2
01001010^01110010=00111000=8
01101001^01010000=00111001=9
10001101^10111011=00110110=6
[解决办法]
至于嘛,搞得这么神秘。
[解决办法]
前后没有互相影响,这还不马上被解开。
[解决办法]
7楼和22楼给出答案了
[解决办法]
C/C++ code
//结果输出:ff 4c 9f 67 72 50 bb // fc 48 9e 64 7b 58 bcint GetNumber(char* str)  {      char  dstr[8]={0};    /*    __asm{        MOV  ESI,str            LEA  EDI,dstr            XOR  EAX,EAX            MOV  EDX,1234ABCDH            MOV  ECX,7goon:        MOV AL,BYTE PTR [ESI]        INC ESI            XOR  AL,DL            STOS BYTE PTR [EDI]        ROR  EDX,3            DEC  ECX            TEST ECX,ECX            JE   end            jmp goonend:    }    */    unsigned char *pDSTR = (unsigned char *)dstr;    unsigned int nTmp = 0x1234ABCD;    int iii = 7;    while( iii-- )    {        *pDSTR++ = (unsigned char)*str++ ^ (unsigned char)nTmp;        nTmp = (nTmp<<(sizeof(unsigned int)*8-3))|(nTmp>>3);    }    // 改成这个后,输出结果老是:fc 48 9e 64 7b 58 bc    // 重启后,再编译也是这样    for(int i=0;i<7;i++)        printf("%x ",dstr[i]&0xFF);    printf("\n ");    return 0;} 


[解决办法]
UP~~
[解决办法]
路过............
[解决办法]
知道原理就好解码了。

C/C++ code
#include <iostream>#include <sstream>using namespace std;int main(int argc, char** argv) {    int ornum = 0x1234abcd;    unsigned int x;    stringstream str;    char num[7][3] = {        "ff","4c","9f","67","72","50","bb"    };    char qq[8] = {0};    __asm {        mov ebx, ornum        lea  edi,qq    }    for (int i = 0; i < 7; i++) {        /**         *    16进制读入         */        str << hex << num[i];        str >> x;        str.clear();        __asm{            mov eax, x            xor al, bl            stos byte ptr [edi]            ror  ebx,3        }    }    for (int i = 0; i < 7; i++) {        cout << qq[i];    }    return 0;}
[解决办法]
上面最后输出一个循环写的很SB,
[解决办法]
把ff 4c 9f 67 72 50 bb作为str输入,打印出来的结果就是群号了,哈哈哈
[解决办法]
C/C++ code
// 画蛇添足一下#include <stdio.h>#define N 8int main(void){    unsigned char dstr[N] = {0xff, 0x4c, 0x9f, 0x67, 0x72, 0x50, 0xbb, 0};    // ff 4c 9f 67 72 50 bb    unsigned int nTmp = 0x1234ABCD;    int i;    for( i = 0; i < (N-1); ++i )    {        dstr[i] ^= (unsigned char)nTmp;        nTmp = (nTmp<<(sizeof(unsigned int)*8-3))|(nTmp>>3);    }    puts( (const char*) dstr);    getchar();    return 0;}
[解决办法]
看了楼上各位的程序,我发现我真的好笨呀,我是用笔在纸上算出来的…………悲剧
[解决办法]
有意思,我也试试!
[解决办法]
呵呵 终于搞出来了。。。。。。。。
[解决办法]
我顶上去
[解决办法]
我拿计算器算的 行不行 没空写程序.........
ps.算头三个数的时候,我以为我中计了........
[解决办法]
X86汇编/VC++/驱动_神话4
连个vip群都不是 诶
[解决办法]
我加了,怎么没给我回应??
[解决办法]
笨笨的写了个。。。
C/C++ code
void ParseQQ(){    char  strResult[] = {0xff, 0x4c, 0x9f, 0x67, 0x72, 0x50, 0xbb}; //ESI    char  strNumber[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; //EDI    char*  strQQ = new char[8]; //EBX    memset(strQQ, 0, 8);    unsigned int   nCompare = 0x1234abcd; //EDX    __asm    {start:        PUSH ESI        PUSH EBX        PUSH EDX        PUSH ECX        PUSH EAX        LEA ESI, [strResult]        MOV EBX, strQQ        MOV EDX, nCompare        MOV CL,  7        XOR EAX, EAXloop1:    LEA EDI,[strNumber]        XOR CH, CH        CMP CL, CH        JE  EXITloop2:  MOV AL, BYTE PTR [EDI]        INC EDI        XOR AL, DL        CMP AL, BYTE PTR [ESI]        JNE  loop2        MOV AL, BYTE PTR [EDI - 1]        MOV [EBX], AL        INC EBX        INC ESI        ROR EDX, 3        DEC CL        JMP loop1        EXIT:        POP EAX        POP ECX        POP EDX        POP EBX        POP ESI    }    printf("QQ: %s \r\n", strQQ);    delete []strQQ;    return;}int main(){    //char str1[]="1234567";    //?????????????!????CSDN(???!)//    GetNumber(str1);        ParseQQ();    system("pause");        return 0;} 


[解决办法]

C/C++ code
int GetNumber(char *str){    char dstr[8] = {0};    int x = 0x1234ABCD;    for(int i = 0;i < 7;i++)    {        dstr[i] = str[i]^(x&255);        _asm        {            ror x,3        }    }    for(i=0;i<7;i++)        printf("%x ",dstr[i]&0xFF);    printf("\n ");    return 1;}
[解决办法]
我是来每天回复赚10分滴!
[解决办法]
我是来看鱼妹的,此题较傻,大家继续..
[解决办法]
CSDN把时间搞错了?还是版主们眼神不好,居然还让你活着呢。。。

读书人网 >VC/MFC

热点推荐