初步的看一下C#窗体程序的直接反汇编代码
C#基本窗體程序;
進入反匯編查看;
?
看一下把字符串賦給文本框的這段反匯編;?
大體的閱讀一下,以略懂匯編的人來看,基本含義:
? ? ebp寄存器的值減去一個值,取出此偏移地址的值,賦給eax;
? ? eax寄存器的值,加上一個值,取出此偏移地址的dword,賦給ecx;
? ? 取數據段某處的一個值,放入edx;
? ? 取出以ecx寄存器的值為偏移處的dword,放入eax;
? ? eax寄存器的值,再加上一個值,取出此偏移處的dword,又放入eax;
? ? 調用以eax的值為偏移處的函數;
看上去很繞,最后eax寄存器的值是啥我也不知道;
字符串是放在棧(ebp所指),或是數據段(ds),匯編不熟悉不了解;
最后調用的地址處,莫非是Win32的SetDlgItemText類似函數,文本框句柄在哪里?這些都是問題;
復習一下32位寄存器的基本用法;
? ??esp是棧指針,ebp只是存取某時刻的esp;
? ? EAX 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。
? ? EBX 是"基地址"(base)寄存器, 在內存尋址時存放基地址。
? ? ECX 是計數器(counter), 是重復(REP)前綴指令和LOOP指令的內定計數器。
? ? EDX 則總是被用來放整數除法產生的余數。
? ? 加方括號 [ ] 表示一種間接的取操作數方式,有點類似于C語言中的指針概念;
ECX在這里應該也沒有做為計數寄存器使用;
這段代碼和手寫的Win32匯編設置文本框值完全不同;
自己寫Win32匯編設置文本框值的程序在,
? ??Win32匯編獲取和設置文本框的內容_bcbobo21cn的專欄-CSDN博客_win32設置文本框內容
總之這段反匯編看上去比花指令還花;?肯定是微軟為了防止人跟蹤進入dNet虛擬機的內部、了解到其設計機制,而搞了一些東西;
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的初步的看一下C#窗体程序的直接反汇编代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言getch()函数学习
- 下一篇: 汇编LAHF指令学习 - 使用emu80