📄 矛与盾的较量(2)——crc原理篇.htm
字号:
color=#ff0000>flat</FONT><FONT
color=#9932cd><B>,</B></FONT> <FONT
color=#ff0000>stdcall</FONT><BR><A name=L15><FONT
color=#ff0000>option</FONT> <FONT
color=#ff0000>casemap</FONT><FONT
color=#3080ca>:</FONT>none<BR><A name=L16><BR><A
name=L17><FONT color=#ff8000>include</FONT>
windows.inc<BR><A name=L18><FONT
color=#ff8000>include</FONT> kernel32.inc<BR><A
name=L19><FONT color=#ff8000>include</FONT>
user32.inc<BR><A name=L20><FONT
color=#ff8000>includelib</FONT> kernel32.lib<BR><A
name=L21><FONT color=#ff8000>includelib</FONT>
user32.lib<BR><A name=L22><BR><A
name=L23>WndProc <FONT
color=#ff0000>proto</FONT> <FONT
color=#3080ca>:</FONT><FONT
color=#ff0000>DWORD</FONT><FONT
color=#9932cd><B>,</B></FONT> <FONT
color=#3080ca>:</FONT><FONT
color=#ff0000>DWORD</FONT><FONT
color=#9932cd><B>,</B></FONT> <FONT
color=#3080ca>:</FONT><FONT
color=#ff0000>DWORD</FONT><FONT
color=#9932cd><B>,</B></FONT> <FONT
color=#3080ca>:</FONT><FONT
color=#ff0000>DWORD</FONT><BR><A
name=L24>init_crc32table <FONT
color=#ff0000>proto</FONT><BR><A
name=L25>arraycrc32
<FONT color=#ff0000>proto</FONT><BR><A name=L26><BR><A
name=L27><FONT color=#9932cd><B>.</B></FONT><FONT
color=#ff0000>const</FONT><BR><A
name=L28>IDC_BUTTON_OPEN <FONT
color=#ff0000>equ</FONT> <FONT
color=#802000>3000</FONT><BR><A
name=L29>IDC_EDIT_INPUT
<FONT
color=#ff0000>equ</FONT> <FONT
color=#802000>3001</FONT><BR><A name=L30><BR><A
name=L31><FONT color=#9932cd><B>.</B></FONT><FONT
color=#ff0000>data</FONT><BR><A
name=L32>szDlgName
<FONT
color=#ff0000>db</FONT> <FONT
color=#0000ff>"lc_dialog"</FONT><FONT
color=#9932cd><B>,</B></FONT> <FONT
color=#802000>0</FONT><BR><A
name=L33>szTitle
<FONT
color=#ff0000>db</FONT> <FONT
color=#0000ff>"CRC demo by LC"</FONT><FONT
color=#9932cd><B>,</B></FONT> <FONT
color=#802000>0</FONT><BR><A
name=L34>szTemplate <FONT
color=#ff0000>db</FONT> <FONT
color=#0000ff>"字符串 ""%s"" 的 CRC32 值是:%X"</FONT><FONT
color=#9932cd><B>,</B></FONT> <FONT
color=#802000>0</FONT><BR><A
name=L35>crc32tbl <FONT
color=#ff0000>dd</FONT> <FONT
color=#802000>256</FONT> <FONT
color=#ff0000>dup</FONT><FONT
color=#ff00ff>(</FONT><FONT color=#802000>0</FONT><FONT
color=#ff00ff>)</FONT> <FONT
color=#238e23>;CRC-32 table</FONT><BR><A
name=L36>szBuffer <FONT
color=#ff0000>db</FONT> <FONT
color=#802000>255</FONT> <FONT
color=#ff0000>dup</FONT><FONT
color=#ff00ff>(</FONT><FONT color=#802000>0</FONT><FONT
color=#ff00ff>)</FONT><BR><A name=L37><BR><A
name=L38><FONT color=#9932cd><B>.</B></FONT><FONT
color=#ff0000>data</FONT><FONT
color=#3080ca>?</FONT><BR><A
name=L39>szText <FONT
color=#ff0000>db</FONT> <FONT
color=#802000>300</FONT> <FONT
color=#ff0000>dup</FONT><FONT
color=#ff00ff>(</FONT><FONT color=#3080ca>?</FONT><FONT
color=#ff00ff>)</FONT><BR><A name=L40><BR><A
name=L41><FONT color=#9932cd><B>.</B></FONT><FONT
color=#ff0000>code</FONT><BR><A name=L42>main<FONT
color=#3080ca>:</FONT><BR><A
name=L43> <FONT
color=#ff0000>invoke</FONT> GetModuleHandle<FONT
color=#9932cd><B>,</B></FONT> NULL<BR><A
name=L44> <FONT
color=#ff0000>invoke</FONT> DialogBoxParam<FONT
color=#9932cd><B>,</B></FONT> <FONT
color=#ff0000>eax</FONT><FONT
color=#9932cd><B>,</B></FONT> <FONT
color=#ff0000>offset</FONT> szDlgName<FONT
color=#9932cd><B>,</B></FONT> <FONT
color=#802000>0</FONT><FONT
color=#9932cd><B>,</B></FONT> WndProc<FONT
color=#9932cd><B>,</B></FONT> <FONT
color=#802000>0</FONT><BR><A
name=L45> <FONT
color=#ff0000>invoke</FONT> ExitProcess<FONT
color=#9932cd><B>,</B></FONT> <FONT
color=#ff0000>eax</FONT><BR><A name=L46><BR><A
name=L47>WndProc <FONT color=#ff0000>proc</FONT> <FONT
color=#ff0000>uses</FONT> <FONT color=#ff0000>ebx</FONT>
hWnd<FONT color=#3080ca>:</FONT>HWND<FONT
color=#9932cd><B>,</B></FONT> uMsg<FONT
color=#3080ca>:</FONT>UINT<FONT
color=#9932cd><B>,</B></FONT> wParam<FONT
color=#3080ca>:</FONT>WPARAM<FONT
color=#9932cd><B>,</B></FONT> lParam<FONT
color=#3080ca>:</FONT>LPARAM<BR><A name=L48><BR><A
name=L49> <FONT
color=#9932cd><B>.</B></FONT><FONT
color=#ff0000>if</FONT> uMsg <FONT
color=#3080ca>=</FONT><FONT color=#3080ca>=</FONT>
WM_CLOSE<BR><A
name=L50> <FONT
color=#ff0000>invoke</FONT> EndDialog<FONT
color=#9932cd><B>,</B></FONT> hWnd<FONT
color=#9932cd><B>,</B></FONT> <FONT
color=#802000>0</FONT><BR><A
name=L51> <BR><A
name=L52> <FONT
color=#9932cd><B>.</B></FONT><FONT
color=#ff0000>elseif</FONT> uMsg <FONT
color=#3080ca>=</FONT><FONT color=#3080ca>=</FONT>
WM_COMMAND<BR><A
name=L53> <FONT
color=#ff0000>mov</FONT> <FONT
color=#ff0000>eax</FONT><FONT
color=#9932cd><B>,</B></FONT>wParam<BR><A
name=L54> <FONT
color=#ff0000>mov</FONT> <FONT
color=#ff0000>edx</FONT><FONT
color=#9932cd><B>,</B></FONT><FONT
color=#ff0000>eax</FONT><BR><A
name=L55> <FONT
color=#ff0000>shr</FONT> <FONT
color=#ff0000>edx</FONT><FONT
color=#9932cd><B>,</B></FONT><FONT
color=#802000>16</FONT><BR><A
name=L56> <FONT
color=#ff0000>movzx</FONT> <FONT
color=#ff0000>eax</FONT><FONT
color=#9932cd><B>,</B></FONT> <FONT
color=#ff0000>ax</FONT><BR><A
name=L57> <FONT
color=#9932cd><B>.</B></FONT><FONT
color=#ff0000>if</FONT> <FONT color=#ff0000>edx</FONT>
<FONT color=#3080ca>=</FONT><FONT color=#3080ca>=</FONT>
BN_CLICKED<BR><A
name=L58> <FONT
color=#9932cd><B>.</B></FONT><FONT
color=#ff0000>IF</FONT> <FONT color=#ff0000>eax</FONT>
<FONT color=#3080ca>=</FONT><FONT color=#3080ca>=</FONT>
IDCANCEL<BR><A
name=L59> <FONT
color=#ff0000>invoke</FONT> EndDialog<FONT
color=#9932cd><B>,</B></FONT> hWnd<FONT
color=#9932cd><B>,</B></FONT> NULL<BR><A
name=L60> <FONT
color=#9932cd><B>.</B></FONT><FONT
color=#ff0000>ELSEIF</FONT> <FONT
color=#ff0000>eax</FONT> <FONT
color=#3080ca>=</FONT><FONT color=#3080ca>=</FONT>
IDC_BUTTON_OPEN <FONT color=#3080ca>|</FONT><FONT
color=#3080ca>|</FONT> <FONT color=#ff0000>eax</FONT>
<FONT color=#3080ca>=</FONT><FONT color=#3080ca>=</FONT>
IDOK <BR><A
name=L61> <FONT
color=#238e23>;******************************************</FONT><BR><A
name=L62> <FONT
color=#238e23>;关键代码开始:(当当当当……)</FONT><BR><A
name=L63> <FONT
color=#238e23>;******************************************</FONT><BR><A
name=L64> <FONT
color=#238e23>;取得用户输入的字符串:</FONT><BR><A
name=L65> <FONT
color=#ff0000>invoke</FONT> GetDlgItemText<FONT
color=#9932cd><B>,</B></FONT> hWnd<FONT
color=#9932cd><B>,</B></FONT> IDC_EDIT_INPUT<FONT
color=#9932cd><B>,</B></FONT> <FONT
color=#ff0000>addr</FONT> szBuffer<FONT
color=#9932cd><B>,</B></FONT> <FONT
color=#802000>255</FONT><BR><A name=L66><BR><A
name=L67> <FONT
color=#238e23>;初始化crc32table:</FONT><BR><A
name=L68> <FONT
color=#ff0000>invoke</FONT> init_crc32table<BR><A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -