大牛们,来挑战一下! 高分邀请大牛!
- 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把时间搞错了?还是版主们眼神不好,居然还让你活着呢。。。