Write a blog this afternoon, analysis and analysis of the nature of the function call in C, first we know that the essence of the function in C is a piece of code, but give the code a name, this name is his code of the beginning of the addressThis is also the essence of the function name, in fact, the label in the assembly. Below we will be exposed to some things such as the EIP is what we often say the program counter, as well as EBP and ESP (here ar
Process 0*/Task[pid].pid = pid;//Initialize process # No. 0Task[pid].state = 0;/*-1 unrunnable, 0 runnable, >0 stopped *///state is runningTask[pid].task_entry = Task[pid].thread.ip = (unsigned long) my_process;//entrance is myprocessTASK[PID].THREAD.SP = (unsigned long) task[pid].stack[kernel_stack_size-1];//stack stack topTask[pid].next = task[pid];//just started it itself, so next also points to its own/*fork more process *///create more processesfor (i=1;i{memcpy (task[i],task[0],sizeof (TP
, and it is cumbersome to save each register using push, Intel provides an instruction Pushad to hold the values of all common registers
IRET and iretdis the mnemonic for the same opcode. The iretd mnemonic (interrupt return double word) is used to return an interrupt that uses a 32-bit operand size, but most assemblers use the IRET mnemonic interchangeably for both operands.
3. Process scheduling Approximate process
PCB:The PCB is used to describe the process, it is independent of the proc
that it is behind the fscanf function in the source program, so in the disassembly, its position is also behind the fscanf. It is necessary to briefly describe the call implementation principle. It is divided into two steps. The first step is to push the current instruction location to the stack in the memory, that is, to save the return address (the address saved by the EIP, that is, the next instruction of the call, the second step is to jump to the entrance of the called function. Go to this
bar ~)./* * Saving eflags is important. It switches notonly IOPL between tasks, * It also protects other tasks from NT Leakingthrough sysenter etc. */#defineswitc H_to (prev, Next, last) do { /* * Context-s Witching clobbers All registers, Sowe clobber * them explicitly, via unused outputvariables. * (EAX and EBP are not listed because EBP issaved/restored * explicitly for Wchan access a
_ stdcall is the same when it first enters the subfunction. The top of the stack pointed to by ESP is the return address. This is pushed into the stack by the call command. The following are the parameters, the left parameter is on the top, and the right parameter is on the bottom (first on the stack ).
As shown in the previous table, the difference between __cdecl and _ stdcall is: __cdecl is the stack occupied by the caller to clean up the paramete
Frame pointer omission (FPO)
FPO is an optimization that compresses or omits the process of creating framework pointers for the function on the stack. This option accelerates function calling because you do not need to create or remove the framework pointer (ESP, EBP. At the same time, it also freed up a register to store frequently used variables. This optimization is available only in the intelcpu architecture.
Any call convention that has be
-4]
00401273 call @ ILT + 0 (Manager ::~ Manager) (00401005)
00401278 pop EDI
00401279 pop ESI
004020.a pop EBX
004010000b add ESP, 44 h
0040da-e cmp ebp, ESP
00401280 call _ chkesp (00408760)
00401285 mov ESP, EBP
00401287 pop EBP
We found that the manager structure and analysis structure are also simple. A constructor is constructed
program can return the correct position of the main program and continue execution. For example, call the main function named add assembler module: Main (){...... add (DEST, OP1, OP2, flages );......}. In this example, the main function is de-assembled, and the main function automatically organizes the stack before calling the Add function....Lea 0xfffffffe8 (% EBP), % eax # The first address of the flages array into the stackPush % eaxPushl 0xfffffff8 (% EBP) # OP2 inbound StackPushl 0 xffffff
memory address for the value of the Register8. variable addressing: Changing the value of a register when indirectly addressing9. The Linux kernel uses the/T assembly format10. EIP registers cannot be directly modified and can only be modified indirectly by special instructions11. The function call stack is superimposed on a logically multiple stack.12. The return value of the function is returned to the upper-level function by default using the EAX register storePre-execution stack, both
segment descriptor of ring0) to the SS register.4. Load the value of sysenter_esp_msr to the ESP register.5. Switch the privileged level to ring06. If the VM flag of the eflags register is set, clear the flag.7. Start executing the specified ring0 codeAfter the ring0 code is executed and the sysexit command is called to return the ring3 code, the CPU will perform the following operations:1. Load the value of sysenter_cs_msr plus 16 (code segment desc
leads to errors and crashes several times at least. In theory, the AES problem can also be solved.To solve this problem, although I have not tried it.To upgrade to the latest kernel, you must· Compile and install libkvm· Compile ps, vmstat, top, and install it on a machine with a new kernelReaders can view the latest updates in http://www.openbsd.org/anoncvs.html.After the new kernel starts to work, two gateways that can be used as OpenBSD VPN will appear. Ensure Two SystemsThe/etc/sysctl. conf
stack recovery method is different, and this is also the most important.
_ Cdecl rules require the caller to be responsible for Stack restoration. From the Assembly perspective, the position of stack restoration is within the calling function, consider such a piece of C ++ code (Debug under VC)
Copy codeThe Code is as follows: # include
Void _ cdecl func (int param1, int param2, int param3 ){Int var1 = param1;Int var2 = param2;Int var3 = param3;
Printf ("% ld \ n", long ( param1 ));Printf ("%
organize the processes. The main function of the embedded assembly code is to initialize the No. 0 process, the ESP of process No. 0 is written to the ESP register, because the process has not yet begun to execute, so the process of ESP and EBP should point to the bottom of the stack (empty stack), in addition, the NO. 0 process of the EIP here has pointed to th
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
. Load the new process context into the machine register.The Contex is actually a few register variables that are used to hold the values of these registers.The function code for Swtch is as follows:# Context Switch## void Swtch (struct context **old, struct context *new);## Save Current Register context# and then the load register context from new. Globl SWTCHSWTCH:MOVL4 (%esp), %eax movl 8 (%esp), %edx #
Today, I cracked a construction software running on the auto cad platform. Through debugging tracking, I found that the software was installed and registered with a limited number of times.Cracking Process: today, a building software running on the auto cad platform was cracked. Through debugging and tracking, it was found that the software was installed and registered with a limited number of times.
1. Registration is performed during installation, unlike general registration after installation
First of all to ensure that the computer has downloaded the Git client, no self- https://git-scm.com/downloadSTEP1: Get the Build ToolchainWindows does not have a built-in "make" environment, so you will need a GNU-compatible environment to install the toolchain. We use the MSYS2 Environment to provide this. You don't have to use this environment all the time, you can program with front-end software such as Eclipse or Arduio, but the toolchain is actually running in the background. The quick
it ). The Code distortion method used: * use JMP to disrupt the code. This is not a new trick, but it still works. * Use JMP to wrap multiple functions together. In this way, the analysts cannot find where the function starts and ends. * Change call. The attacker is extremely sensitive to call, which makes it impossible to find a call. For example, I can change call sub1 to mov eax, offset sub1 + 3 push offset @ 1sub eax, 3jmp eax @ 1: * To Change ret. The attacker is extremely sensitive to ret
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.