|
|
[原创]IOS ShellCode And Exploition Techniques
是前ISS雇员lynn在BlackHat 2005上的一次演讲。一是受到Cisco的法律层面的阻挠,二是受到ISS方面的阻挠,但最本质的是lynn本人不想扩散有价值的信息,这三个原因致使这份演讲稿没有它标题里忽悠的有意思。属于鸡肋性质的。还不如FX曾经给出的那些文档更有意义些。不过lynn这次演讲给全世界即将开展IOS攻击研究的人一剂强心针,因为这是第一次有人公开声称获取了15级的shell,而之前至少浮在水面的研究人员最多是通过改写config文件获取控制,无法热获取15级的shell。不过对于地下世界的(尤指苏联佬、德国佬)IOS攻击研究人员,lynn带来的是裂缝。 |
|
|
[求助]注入到svchost.exe不能调用MessageBox
看MSDN,MessageBox第四形参或上一个MB_SERVICE_NOTIFICATION |
|
|
[原创]PE文件格式学习小结 之 校验和的计算
这个,不应该太迷信网络搜索,事实上MSDN里的介绍就足够了。 |
|
|
[求助]怎么拦截IIS的访问?
你是在用户态拦的吧,你对付的是高版本的IIS吧,那是在内核里直接处理了80/TCP。有个驱动,应该是叫http.sys,在用户态拦不到的。 |
|
|
[求助]关于RSA的私匙和公匙,2个互换是否会影响强度?
从某种角度说,对加密强度会有一些影响的,但抛开猜测出e的可能,则对加密强度没有影响。 虽然你的主贴里的两个操作是完全等价的操作。但一般e出于提高RSA效率的考虑,会是一些比较常见的选择,大多数人会选择那些书中的推荐值(3、17、65537等等),而不是自己去随机选取与(p-1)(q-1)互素的其它值。除非你选了很特别的e,否则在反过来(指将e保密,却公开d)的情形下,别人会猜出e的。你为什么要反过来?你确认你的e是很特别的,别人从未见过的,不易猜出的? 可以抵抗已知明文攻击。 |
|
|
|
|
|
[求助]帮我构造一个windbg条件断点语句!
[QUOTE=birdEEI;440129]现在知道一个程序通过更改SEH来实现跳转,但是不知道在哪里更改的我的SEH链。dd fs:[0]可以得到第SEH链表头,假设该地址为a,a+4为第一个处理函数的地址。现在需要当a+4处的内容被更改为b的时候下断点,不会构造语句,帮忙一下。[/QUOTE] ba w 4 a+4 "j (poi(a+4)==b) '';'gc'" |
|
|
如何计算大于65个字符串的MD5值????
MD5的C代码那不满天飞。你还上这里来找,真是!@#$%^&* /* * 示例代码中假设int型是32-bit的 */ /************************************************************************ * * * Head File * * * ************************************************************************/ #include <stdio.h> #include <stdlib.h> /************************************************************************ * * * Macro * * * ************************************************************************/ /* * F, G, H and I are basic MD5 functions */ #define F( x, y, z ) ( ( ( x ) & ( y ) ) | ( ( ~x ) & ( z ) ) ) #define G( x, y, z ) ( ( ( x ) & ( z ) ) | ( ( y ) & ( ~z ) ) ) #define H( x, y, z ) ( ( x ) ^ ( y ) ^ ( z ) ) #define I( x, y, z ) ( ( y ) ^ ( ( x ) | ( ~z ) ) ) #define ROTATE_LEFT( x, n ) ( ( ( x ) << ( n ) ) | ( ( x ) >> ( 32 - ( n ) ) ) ) /* * FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4 * Rotation is separate from addition to prevent recomputation */ #define FF( a, b, c, d, x, s, ac ) \ { \ ( a ) += F( ( b ), ( c ), ( d ) ) + ( x ) + ( unsigned int )( ac ); \ ( a ) = ROTATE_LEFT( ( a ), ( s ) ); \ ( a ) += ( b ); \ } #define GG( a, b, c, d, x, s, ac ) \ { \ ( a ) += G( ( b ), ( c ), ( d ) ) + ( x ) + ( unsigned int )( ac ); \ ( a ) = ROTATE_LEFT( ( a ), ( s ) ); \ ( a ) += ( b ); \ } #define HH( a, b, c, d, x, s, ac ) \ { \ ( a ) += H( ( b ), ( c ), ( d ) ) + ( x ) + ( unsigned int )( ac ); \ ( a ) = ROTATE_LEFT( ( a ), ( s ) ); \ ( a ) += ( b ); \ } #define II( a, b, c, d, x, s, ac ) \ { \ ( a ) += I( ( b ), ( c ), ( d ) ) + ( x ) + ( unsigned int )( ac ); \ ( a ) = ROTATE_LEFT( ( a ), ( s ) ); \ ( a ) += ( b ); \ } /* * Data structure for MD5 (Message-Digest) computation */ typedef struct { /* * number of _bits_ handled mod 2^64 */ unsigned int i[2]; /* * scratch buffer */ unsigned int buf[4]; /* * input buffer */ unsigned char in[64]; /* * actual digest after MD5Final call */ unsigned char digest[16]; } MD5_CTX; /************************************************************************ * * * Function Prototype * * * ************************************************************************/ static void md5 ( unsigned char *in, unsigned int insize, unsigned char *out ); static void MD5Final ( MD5_CTX *mdContext ); static void MD5Init ( MD5_CTX *mdContext ); static void MD5Update ( MD5_CTX *mdContext, unsigned char *inBuf, unsigned int inLen ); static void Transform ( unsigned int *buf, unsigned int *in ); /************************************************************************ * * * Static Global Var * * * ************************************************************************/ /************************************************************************/ static void md5 ( unsigned char *in, unsigned int insize, unsigned char *out ) { #define MD5_BUFSIZE 4096 unsigned char buf[ MD5_BUFSIZE ]; MD5_CTX mdbuf; unsigned char *p; unsigned int i, j; MD5Init( &mdbuf ); i = insize; p = in; for ( ; ; ) { if ( i > MD5_BUFSIZE ) { for ( j = 0; j < MD5_BUFSIZE; j++ ) { buf[j] = p[j]; } MD5Update( &mdbuf, buf, MD5_BUFSIZE ); i -= MD5_BUFSIZE; p += MD5_BUFSIZE; } else { for ( j = 0; j < i; j++ ) { buf[j] = p[j]; } MD5Update( &mdbuf, buf, i ); break; } } /* end of for */ MD5Final( &mdbuf ); for ( i = 0; i < 16; i++ ) { out[i] = mdbuf.digest[i]; } return; } /* end of md5 */ /* * MD5Final terminates the message-digest computation and ends with the * desired message digest in mdContext->digest[0..15] */ static void MD5Final ( MD5_CTX *mdContext ) { unsigned int in[16]; int mdi; unsigned int i, ii; unsigned int padLen; unsigned char PADDING[64] = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; /* * save number of bits */ in[14] = mdContext->i[0]; in[15] = mdContext->i[1]; /* * compute number of bytes mod 64 */ mdi = ( int )( ( mdContext->i[0] >> 3 ) & 0x3F ); /* * pad out to 56 mod 64 */ padLen = ( mdi < 56 ) ? ( 56 - mdi ) : ( 120 - mdi ); MD5Update( mdContext, PADDING, padLen ); /* * append length in bits and transform */ for ( i = 0, ii = 0; i < 14; i++, ii += 4 ) { in[i] = ( ( ( unsigned int )mdContext->in[ii+3] ) << 24 ) | ( ( ( unsigned int )mdContext->in[ii+2] ) << 16 ) | ( ( ( unsigned int )mdContext->in[ii+1] ) << 8 ) | ( ( unsigned int )mdContext->in[ii] ); } Transform ( mdContext->buf, in ); /* * store buffer in digest */ for ( i = 0, ii = 0; i < 4; i++, ii += 4 ) { mdContext->digest[ii] = ( unsigned char )( mdContext->buf[i] & 0xFF); mdContext->digest[ii+1] = ( unsigned char )( ( mdContext->buf[i] >> 8 ) & 0xFF ); mdContext->digest[ii+2] = ( unsigned char )( ( mdContext->buf[i] >> 16 ) & 0xFF ); mdContext->digest[ii+3] = ( unsigned char )( ( mdContext->buf[i] >> 24 ) & 0xFF ); } /* end of for */ return; } /* end of MD5Final */ /* * MD5Init initializes the message-digest context mdContext. * All fields are set to zero */ static void MD5Init ( MD5_CTX *mdContext ) { mdContext->i[0] = mdContext->i[1] = ( unsigned int )0; /* * Load magic initialization constants */ mdContext->buf[0] = ( unsigned int )0x67452301; mdContext->buf[1] = ( unsigned int )0xefcdab89; mdContext->buf[2] = ( unsigned int )0x98badcfe; mdContext->buf[3] = ( unsigned int )0x10325476; return; } /* end of MD5Init */ /* * MD5Update updates the message-digest context to account for the * presence of each of the characters inBuf[0..inLen-1] in the message * whose digest is being computed. */ static void MD5Update ( MD5_CTX *mdContext, unsigned char *inBuf, unsigned int inLen ) { unsigned int in[16]; int mdi; unsigned int i, ii; /* * compute number of bytes mod 64 */ mdi = ( int )( ( mdContext->i[0] >> 3 ) & 0x3F ); if ( ( mdContext->i[0] + ( ( unsigned int )inLen << 3 ) ) < mdContext->i[0] ) { mdContext->i[1]++; } mdContext->i[0] += ( ( unsigned int )inLen << 3 ); mdContext->i[1] += ( ( unsigned int )inLen >> 29 ); while ( inLen-- ) { /* * add new character to buffer, increment mdi */ mdContext->in[ mdi++ ] = *inBuf++; /* * transform if necessary */ if ( mdi == 0x40 ) { for ( i = 0, ii = 0; i < 16; i++, ii += 4 ) { in[i] = ( ( ( unsigned int )mdContext->in[ii+3] ) << 24 ) | ( ( ( unsigned int )mdContext->in[ii+2] ) << 16 ) | ( ( ( unsigned int )mdContext->in[ii+1] ) << 8 ) | ( ( unsigned int )mdContext->in[ii] ); } /* end of for */ Transform( mdContext->buf, in ); mdi = 0; } } /* end of while */ return; } /* end of MD5Update */ /* * Basic MD5 step. Transforms buf based on in. */ static void Transform ( unsigned int *buf, unsigned int *in ) { unsigned int a = buf[0], b = buf[1], c = buf[2], d = buf[3]; /* * Round 1 */ #define S11 7 #define S12 12 #define S13 17 #define S14 22 FF ( a, b, c, d, in[ 0], S11, 0xd76aa478 ); /* 1 */ FF ( d, a, b, c, in[ 1], S12, 0xe8c7b756 ); /* 2 */ FF ( c, d, a, b, in[ 2], S13, 0x242070db ); /* 3 */ FF ( b, c, d, a, in[ 3], S14, 0xc1bdceee ); /* 4 */ FF ( a, b, c, d, in[ 4], S11, 0xf57c0faf ); /* 5 */ FF ( d, a, b, c, in[ 5], S12, 0x4787c62a ); /* 6 */ FF ( c, d, a, b, in[ 6], S13, 0xa8304613 ); /* 7 */ FF ( b, c, d, a, in[ 7], S14, 0xfd469501 ); /* 8 */ FF ( a, b, c, d, in[ 8], S11, 0x698098d8 ); /* 9 */ FF ( d, a, b, c, in[ 9], S12, 0x8b44f7af ); /* 10 */ FF ( c, d, a, b, in[10], S13, 0xffff5bb1 ); /* 11 */ FF ( b, c, d, a, in[11], S14, 0x895cd7be ); /* 12 */ FF ( a, b, c, d, in[12], S11, 0x6b901122 ); /* 13 */ FF ( d, a, b, c, in[13], S12, 0xfd987193 ); /* 14 */ FF ( c, d, a, b, in[14], S13, 0xa679438e ); /* 15 */ FF ( b, c, d, a, in[15], S14, 0x49b40821 ); /* 16 */ /* * Round 2 */ #define S21 5 #define S22 9 #define S23 14 #define S24 20 GG ( a, b, c, d, in[ 1], S21, 0xf61e2562 ); /* 17 */ GG ( d, a, b, c, in[ 6], S22, 0xc040b340 ); /* 18 */ GG ( c, d, a, b, in[11], S23, 0x265e5a51 ); /* 19 */ GG ( b, c, d, a, in[ 0], S24, 0xe9b6c7aa ); /* 20 */ GG ( a, b, c, d, in[ 5], S21, 0xd62f105d ); /* 21 */ GG ( d, a, b, c, in[10], S22, 0x02441453 ); /* 22 */ GG ( c, d, a, b, in[15], S23, 0xd8a1e681 ); /* 23 */ GG ( b, c, d, a, in[ 4], S24, 0xe7d3fbc8 ); /* 24 */ GG ( a, b, c, d, in[ 9], S21, 0x21e1cde6 ); /* 25 */ GG ( d, a, b, c, in[14], S22, 0xc33707d6 ); /* 26 */ GG ( c, d, a, b, in[ 3], S23, 0xf4d50d87 ); /* 27 */ GG ( b, c, d, a, in[ 8], S24, 0x455a14ed ); /* 28 */ GG ( a, b, c, d, in[13], S21, 0xa9e3e905 ); /* 29 */ GG ( d, a, b, c, in[ 2], S22, 0xfcefa3f8 ); /* 30 */ GG ( c, d, a, b, in[ 7], S23, 0x676f02d9 ); /* 31 */ GG ( b, c, d, a, in[12], S24, 0x8d2a4c8a ); /* 32 */ /* * Round 3 */ #define S31 4 #define S32 11 #define S33 16 #define S34 23 HH ( a, b, c, d, in[ 5], S31, 0xfffa3942 ); /* 33 */ HH ( d, a, b, c, in[ 8], S32, 0x8771f681 ); /* 34 */ HH ( c, d, a, b, in[11], S33, 0x6d9d6122 ); /* 35 */ HH ( b, c, d, a, in[14], S34, 0xfde5380c ); /* 36 */ HH ( a, b, c, d, in[ 1], S31, 0xa4beea44 ); /* 37 */ HH ( d, a, b, c, in[ 4], S32, 0x4bdecfa9 ); /* 38 */ HH ( c, d, a, b, in[ 7], S33, 0xf6bb4b60 ); /* 39 */ HH ( b, c, d, a, in[10], S34, 0xbebfbc70 ); /* 40 */ HH ( a, b, c, d, in[13], S31, 0x289b7ec6 ); /* 41 */ HH ( d, a, b, c, in[ 0], S32, 0xeaa127fa ); /* 42 */ HH ( c, d, a, b, in[ 3], S33, 0xd4ef3085 ); /* 43 */ HH ( b, c, d, a, in[ 6], S34, 0x04881d05 ); /* 44 */ HH ( a, b, c, d, in[ 9], S31, 0xd9d4d039 ); /* 45 */ HH ( d, a, b, c, in[12], S32, 0xe6db99e5 ); /* 46 */ HH ( c, d, a, b, in[15], S33, 0x1fa27cf8 ); /* 47 */ HH ( b, c, d, a, in[ 2], S34, 0xc4ac5665 ); /* 48 */ /* * Round 4 */ #define S41 6 #define S42 10 #define S43 15 #define S44 21 II ( a, b, c, d, in[ 0], S41, 0xf4292244 ); /* 49 */ II ( d, a, b, c, in[ 7], S42, 0x432aff97 ); /* 50 */ II ( c, d, a, b, in[14], S43, 0xab9423a7 ); /* 51 */ II ( b, c, d, a, in[ 5], S44, 0xfc93a039 ); /* 52 */ II ( a, b, c, d, in[12], S41, 0x655b59c3 ); /* 53 */ II ( d, a, b, c, in[ 3], S42, 0x8f0ccc92 ); /* 54 */ II ( c, d, a, b, in[10], S43, 0xffeff47d ); /* 55 */ II ( b, c, d, a, in[ 1], S44, 0x85845dd1 ); /* 56 */ II ( a, b, c, d, in[ 8], S41, 0x6fa87e4f ); /* 57 */ II ( d, a, b, c, in[15], S42, 0xfe2ce6e0 ); /* 58 */ II ( c, d, a, b, in[ 6], S43, 0xa3014314 ); /* 59 */ II ( b, c, d, a, in[13], S44, 0x4e0811a1 ); /* 60 */ II ( a, b, c, d, in[ 4], S41, 0xf7537e82 ); /* 61 */ II ( d, a, b, c, in[11], S42, 0xbd3af235 ); /* 62 */ II ( c, d, a, b, in[ 2], S43, 0x2ad7d2bb ); /* 63 */ II ( b, c, d, a, in[ 9], S44, 0xeb86d391 ); /* 64 */ buf[0] += a; buf[1] += b; buf[2] += c; buf[3] += d; return; } /* end of Transform */ /* * Validation sets: * * Plain : 61 62 63 * MD5 : 90 01 50 98 3c d2 4f b0 d6 96 3f 7d 28 e1 7f 72 */ int main ( int argc, char * argv[] ) { int i; unsigned char plain[] = { 0x61, 0x62, 0x63, }; /* * 无论数据源有多少字节,MD5固定产生128-bit的哈希值,16字节 */ unsigned char hash[16]; md5( plain, sizeof( plain ), hash ); printf( "md5: " ); for ( i = 0; i < sizeof( hash ); i++ ) { printf( "%02x%c", hash[i], i == ( sizeof( hash ) - 1 ) ? '\n' : ' ' ); } return( EXIT_SUCCESS ); } /* end of main */ |
|
|
[求助]Windbg 硬断点问题
最后那句是啥意思?就是说原来是0x02,现在被覆盖成0x32323232了? 如果真是这样还没断下来,你就要考虑你这个程序在某个位置对付了硬件断点,修理了 DRx寄存器。 |
|
|
[求助]用ida的HEX RAYS生成一段伪代码的疑问
这种生成的代码也就是让你看看,你还真当成省事的可用工具使啊? 那个宏,你看上下文,自己重定义成将*( unsigned char * )(&....)什么的就是了。 |
|
|
[求助]Windbg 硬断点问题
在我概念里是有这么一个文件存在的: "\Program Files\Debugging Tools for Windows\debugger.chm" 并且在你安装之后的程序组里有到这个chm的快捷方式,如能移驾拜访一下"MASM Numbers and Operators"小节,想来不会问这么多吧。 ba w 4 13df04 "j dwo(13df04 )==40 '';'gc'" 你这样写,断不下来?如果确实该地址已被修改且未断下来,那你这个程序有可能在anti-debug。 顺便问一句,你对字节序有概念吗?我突然想到你可能犯一个字节序的低级错误,当然,最好这只是我妄想。 |
|
|
[求助]Windbg 硬断点问题
kd> ba w 4 f842ad24 "j dwo(f842ad24)==41414141 '';'gc'" |
|
|
[求助]拦截到一个套接字,怎样可以知道这个套接字绑定哪个地址?
如果这个socket绑定过本机地址,那一般是调用bind()完成的,你何不直接拦截bind()改形参完事。 |
|
|
|
|
|
[求助]一个米人答得出的难题
哇,真是好难。建议下次别发了,反正你都在标题里自问自答了。 |
|
|
[求助]linux下的可执行文件如ELF可以像WIN下一样利用汇编或者加载DLL来增加功能吗?
你想换函数功能的话,有正常途径,LD_PRELOAD 如果是你第一贴里的不正常需求,也可以,看Phrack 56-7,然后看作者主页上的其它文章。 或者用Google搜Silvio Cesare <silvio@big.net.au>,他的一个系列都可以满足你的需求。 |
|
|
[求助]如何调试COM
这个跟调试一般软件有什么区别吗?没想明白你要问什么。 |
|
|
|
|
|
[推荐]网络验证的一些文章
所谓网络认证,从我在这里短短日子里看到的,基本在搞外挂,剩下不多的也是在对付国 产XX软件。至于发帖的那些个楼主,一看就是功利性(心)巨强的主儿,就这状态,别个要 回,那才叫怪。 那些楼主们在无人回的情况下最终是否搞定了呢?我想,最终还是搞定了的。但是否见他 们再次发文提及呢,没有!而同样情况下,一些无人回的提问通过自学搞定后,或多或少 会发文介绍一下过程。这就是对比。出现这种对比的原因无非是这些涉及网络认证的与经 济利益更挂勾罢了。有两种人从能力上讲或可解答这种楼主的问题,一是与楼主本就是同一类 人,二是本身水平较高的人。这头一种人显然不可能回楼主了,楼主是什么样的人,这头 一种人就是什么样的人。这第二种人就要看心情了,人家不太可能被你当枪使的,交流技 术与搞这种XX事还是有很大区别的。 扯这个的意思就是,设啥专题啊,设也白扯,只会出现更多不好评述的人。 关于"打开链接为新窗口",这个是现代浏览器都支持的,不必依赖server端设置,自己drag 一下超链吧。 网络认证,从原理上讲,分别拦截client、server端的socket相关函数(不考虑更复杂的其 它情况),动用sniffer类软件辅助调试。实际与协议分析是同一类型的操作,首先区分各字段, 确定字段长度,手工切割展示,其次设置数据断点,跟踪字段去向。如果不能物理接触到 server端,分析成功的可能性就要减半。最后,并不是所有的网络认证都可以暴力破解,这个 用脚趾头都能想明白,不然人家搞网络认证做啥。 我很奇怪问网络认证的这些个楼主,90%以上的从其问问题的架势上看,就是对此完全陌生 的人,难道不知道这世上还有基础这一名词存在过吗?好歹用过sniffer类软件吧,知道 从汇编代码判断字段长度吧,拦截网络通信函数、设置数据断点这种事就更是基础操作了。 要是问个正经思考过的具体问题,指不定还有人回一下,这完全没有基础一看就是接了私活或是 想挂练的主儿,上来就剁外挂,自己不嫌别人还能不嫌吗。 |
|
|
[原创]如何手工计算0x31333134的CRC-32值?
(我把tnttools的文字风格化了一下) tnttools@pediy给出了最终手工运算过程,他是唯一一个正面解答了我的困惑的人, 十分感谢。 -------------------------------------------------------------------------- [PKZIP, AUTODIN II, Ethernet, FDDI] Width : 32 Poly : 04C11DB7 : x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x^1 + x^0 : (32,26,23,22,16,12,11,10,8,7,5,4,2,1,0) Init : FFFFFFFF RefIn : True RefOut : True XorOut : FFFFFFFF -------------------------------------------------------------------------- (Poly:04C11DB7) | v 0000 0100 1100 0001 0001 1101 1011 0111 | (给出Poly时,一般省略了最高位的1,实际运算时要补上) | v 1 0000 0100 1100 0001 0001 1101 1011 0111 | v (这就是除数) "\x31\x33\x31\x34" (原始数据) | (展开成二进制表示) | v 0011 0001 0011 0011 0011 0001 0011 0100 | (RefIn:True) | v 1000 1100 1100 1100 1000 1100 0010 1100 | (Init:FFFFFFFF) | v 1000 1100 1100 1100 1000 1100 0010 1100 1111 1111 1111 1111 1111 1111 1111 1111 +(模2加法,非进位算术加法,就是异或) --------------------------------------- 0111 0011 0011 0011 0111 0011 1101 0011 (由于是与全1异或,实际就相当于取反) | (在尾部添加0,0的个数比除数的2进制位数少1,就本例而言,添加32个0) | v 0111 0011 0011 0011 0111 0011 1101 0011 0000 0000 0000 0000 0000 0000 0000 0000 | v (这就是被除数) 进行多项式长除法运算: 1110010110111011010101100101110(我们不关心商) +---------------------------------------------------------------- 100000100110000010001110110110111 ) 111001100110011011100111101001100000000000000000000000000000000 100000100110000010001110110110111 --------------------------------- 110010000000110011010010111110110 100000100110000010001110110110111 --------------------------------- 100101001101100010111000010000010 100000100110000010001110110110111 --------------------------------- 101101011100000110110100110101000 100000100110000010001110110110111 --------------------------------- 110111101000010011101000001111100 100000100110000010001110110110111 --------------------------------- 101110011100100011001101110010110 100000100110000010001110110110111 --------------------------------- 111011101010000100001100010000100 100000100110000010001110110110111 --------------------------------- 110110011000001100000101001100110 100000100110000010001110110110111 --------------------------------- 101101111100011100010111110100010 100000100110000010001110110110111 --------------------------------- 110101101001111001100100001010100 100000100110000010001110110110111 --------------------------------- 101010011111110111010101111000110 100000100110000010001110110110111 --------------------------------- 101011100111010101101100111000100 100000100110000010001110110110111 --------------------------------- 101100000101011110001000111001100 100000100110000010001110110110111 --------------------------------- 110010001101110000011000111101100 100000100110000010001110110110111 --------------------------------- 100101010111100100101100010110110 100000100110000010001110110110111 --------------------------------- 101110001100110100010100000001000 100000100110000010001110110110111 --------------------------------- 111010101011011001101011011111100 100000100110000010001110110110111 --------------------------------- 110100011010110111001011010010110 100000100110000010001110110110111 --------------------------------- 101001111001101010001011001000010 100000100110000010001110110110111 --------------------------------- 10010111111010000001011111101010(余数) 1001 0111 1110 1000 0001 0111 1110 1010 (余数) | (RefOut:True) | v 0101 0111 1110 1000 0001 0111 1110 1001 | (XorOut:FFFFFFFF) | v 0101 0111 1110 1000 0001 0111 1110 1001 1111 1111 1111 1111 1111 1111 1111 1111 +(模2加法,非进位算术加法,就是异或) --------------------------------------- 1010 1000 0001 0111 1110 1000 0001 0110 (由于是与全1异或,实际就相当于取反) | v 0xA817E816 (最终结果) 我当时手工计算失败的原因在于没有针对下列参数进行相应处理,只是简单地进行多 项式长除法运算: -------------------------------------------------------------------------- Init : FFFFFFFF RefIn : True RefOut : True XorOut : FFFFFFFF -------------------------------------------------------------------------- 再次感谢tnttools@pediy的手工运算过程。 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
勋章
兑换勋章
证书
证书查询 >
能力值