first set breakpointsThen, two times shift+f9.Then, cancel the breakpoint. Alt+f9 and executes to user codeThen step away, and you'll reach Oep.5.1, after loading the program, you will find the first line has an address0040a86d > B8 74de4500 mov eax,qqspirit.0045de742, at the address of the next breakpoint BP 0045de743. Then shift+f9 run, and cancel breakpoint4, we are in the Retn next line set breakpoints, and then shift+f9 Run, and cancel the breakpoint045de74 B8 F9CB45F0 mov eax,f045cbf90045
Linux Kernel Analysis Course summaryName: Wang ZhaoxianStudy No.: 20135114Note: Original works reproduced please specify the source + "Linux kernel analysis" MOOC course http://mooc.study.163.com/course/USTC-1000029000First, how the computer works 个人理解:计算机就是通过和用户进行交互,执行用户的指令,这些指令存放在内存中,通过寄存器存储,堆栈变化,来一步步顺序执行。Second, the storage program computer working model1.冯诺依曼体系结构—存储程序计算机 硬件角度(主板):通过cpu中IP寄存器指向一个代码段运行某些指令;寄存区,指向内存的某一块区域(代码段) 程序员角度:将cpu抽象为一个for循环,只是执行下一条指令,从内存中取到下一条指令的内容。内存保存指令和数据,cpu
Introduction
EFS Web server is a software that can manage server files over a Web side, and sending a GET request too long can trigger a buffer overflow vulnerabilityAnalysis Source: https://www.exploit-db.com/exploits/39008/ Experimental Environment
WinXP SP3 Chinese versionEFS Web Server7.2Immunity DebuggerWinDbgIdaMona Vulnerability Analysis
Because the author uses the address of the overlay Seh program in ImageLoad.dll, no ASLR, so the use of more stable, open on the pop-up calculator
We w
science lab. concerned that everyday knowledge workers in security positions found databases too hard to query and understand, the DOE/DOD asked Hanrahan to invent a visual analysis framework for analyzing information in Databases. They challenged the person who won two Academy Awards for graphics technology to overturn the database industry.More than five years later, what began as an extensive R D project inside Stanford-supported by the DOE/DoD as well by Microsoft's well known database res
results are as follows: One of the first two cases overflowed, and only the third was normal. And then we'll look at their assembly code, which is the assembler code I disassembled with Objdump: 1 intMainintArgc,char *argv[])2 {3 8048394: - Push%EBP4 8048395: theE5mov%ESP,%EBP5 8048397: theE4 F8 and$0xfffffff8,%esp6804839a: theEc - Sub$0x30,%esp7Long Muln =203879;8804839d: C7 - - 0c the1cGenevamovl $0x31c67,0xc (%ESP)980483A4:xx TenLong Long MULNL =2
(LOCK_PREFIX "decl (% eax) \ n" \ # as shown here, if count is first subtracted from the thread, SF is not equal to 1 (not equal to negative ), execute it later, that is, obtain the lock. then, if the thread that tries to obtain the lock executes this atomic operation (in the unlocked state), SF equals 1, so that void (*) (atomic_t *) is executed *) type Function to enter the waiting queue. therefore, this locking atomic operation can be completed with a single command. in non-SMP scenarios, a
have been learning about Windows kernel recently, write a blog for memo.The specific process of Windows system call in the Pan teacher's "Windows kernel Principle and implementation" in the 8th chapter has been written very clearly, first read the picture given in the.Take CreateFile as an example, after some parameter checking in Ring3 's CreateFile, the final call is NtCreateFile in Ntdll. There are also zwcreatefile, but their addresses point to the same area, so they are essentially the same
the ELF format is generally divided into the following parts :. text ,. data and. bss, where. text is a read-only code area ,. data is a readable and writable data area, while. bss is a readable and writable data zone without initialization. Code and data zones are collectively called sections in ELF. You can use other standard sections or add custom sections as needed, but at least one ELF executable program should have one. text section. The following is our first assembler, In the ATT assemb
Movl $ sys_write, % eax
Movl st_filedes (% EBP), % EBX
Movl st_write_buffer (% EBP), % ECx
Movl $ record_size, % edX
Int $ linux_syscall
# Note-% eax has the return value, which we will
# Give back to our calling program
Popl % EBX
Movl % EBP, % ESP
Popl % EBP
RET
File write-records.s:
. Include "Linux. s"
. Include "record-def.s"
. Section. Data
# Constant data of the records we want to write
# Each text data item is padded to the proper
# Length
insensitive, that is, the meaning of
Function rightpos (const substr, S: string): integer;VaRIPOs: integer;Tmpstr: string;BeginTmpstr: = s;IPOs: = pos (substr, tmpstr); Result: = 0;// Find the location where substr appears for the first timeWhile IPOs BeginDelete (tmpstr, 1, IPOs + Length (substr)-1 );// Delete the searched charactersResult: = Result + IPOs;IPOs: = pos (substr, tmpstr); // find the position where the substr appearsIf IPOs = 0 Then break;Result: = Result + Length (substr)-1;End
1) classic comparison, usually at the registration code (by programhunter)1MoV eax [] can be an address or another register.MoV edX [] the preceding two addresses usually store important information.Call 00 ??????Test eaxJZ (jnz)2MoV eax [] can be an address or another register.MoV edX [] the preceding two addresses usually store important information.Call 00 ??????JNE (JE)3MoV eax []MoV
computer tests, only through their own test, the magic is not much difference in Ubuntu, the problem is said later), and then I compile, look at their assembly code, found a mysterious thing I do not understand.
The following are the assembly codes for the If-else and three mesh operations respectively.
37:if (a>b) 00401079 mov ecx,dword ptr [ebp-10h] 0040107C cmp ecx,dword ptr [ebp-14h]
0040107F jle main+79h (00401089) 38:temp=a; 00401081 mov edx,dw
Different compilers may produce different codes, resulting in different results.
The Code is as follows:
#include
Environment: win7
Compiler: GCC
IDE: vc ++ 6.0/DEV-C ++
Result: q = 22
: Q = (++ j) + (++ mov eax, dword ptr [ebp-] Move J = add eax, add 1 to the Register eax value, eax = 0040103C mov dword ptr [ebp-], eax moves the register value to the variable j, j = 0040103F mov ecx, dword ptr [ebp-] Move J = add ecx, in the register, ecx +, j = mov dword ptr [ebp-], ecx moves the value on
The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion;
products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the
content of the page makes you feel confusing, please write us an email, we will handle the problem
within 5 days after receiving your email.
If you find any instances of plagiarism from the community, please send an email to:
info-contact@alibabacloud.com
and provide relevant evidence. A staff member will contact you within 5 working days.