. Recently, because of a "small problem", the kernel level of Linux kernel and FreeBSD has beenTracking and debugging, and then discovering a very interesting problem, I feel that this problem may be different from the Linux shellcode andThe shellcode differences under FreeBSD are also slightly related to the system architecture. The following content isThe following is a compilation of syscall code.In Linux, the application uses the following code to call syscall:420d4330 55 push EBP |420d4331
(Contact feeling processing is a bit complex, involving multiple loops, later by the people reminded that the process also involves linked list operations)
First, the assignment operation,%edx=%ebp+8 (that is, the input string start address, also phase_6 passed in parameters) stored at the value,%eax=%ebp-24, and%eax and%edx into the stack, call read_six_numbers function, its functions are described earlier. Then the read out of the corresponding processing of the number, followed by a la
A repeated instruction is a set of instructions for operating the data buffer. The data buffer is usually a byte array, which can be a single word or double word. (Intel 'calls these commands string commands) The most common data buffer operation commands are movsx, CMPs, stosx, and scasx. X can be B or W, and D represents byte, word, and dual-word, respectively. These commands are valid for any form of data. In these operations, the ESI and EDI reg
Since the initial value of the dynamic array in Delphi is not always 0, setlength is used before each use of a one-dimensional array, and then fillchar is generally used for clearing, however, if the array is more than dozens of MB, the efficiency of fillchar is very low. For this reason, I specifically wrote some optimization code for clearing the array or memory.
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->1. Use the MMX command to optimiz
Cracking Device Monitor
Author: rockhwndTime: 2004.8.10Web: http://blog.csdn.net/rockhwnd
When device Monitor starts, it reads a file named license. DM in its directory and determines whether the file has been registered based on the content. The code for reading the file and analyzing the file content isC:/program files/common files/HHD software/device Monitor/silk. dll fileSo the createfile breakpoint
: 67f917af ff15d041f967 call dword ptr [67f941d0] // createfile open the file: 67f917b5 8bf8
. CC, see my previous article.
Introduce hiredis. h and dependent libraries into the project. Here, the static link library form/usr/lib/libhiredis.
Write main, CPP
/** File: Main. CPP * Author: Vicky. H * mail: eclipser@163.com */# include
First:
[Root @ localhost ~] # Redis-cli-P 3307Redis 127.0.0.1: 3307> Del Jack(Integer) 1Redis 127.0.0.1: 3307>
Run the first comment to write the object to redis:
Bytes size = 124Set (Binary API): OK0
The user U object has been successfully written to redis
\x1c\x08\x80\xf3\x44\x88\x1c\x08\x41\x80\xfb\x90\x75\xf1"The new shellcode format is as follows:Decoder machine code + encrypted Bullet Box instance shellcode+0xd4+ "\x90\x90\x90\x90\x90\x90\x90" + "\x7c\xfb\x12\x00"Note:0x90^0x44=0xd4,0xd4 is the end character after encoding"\x90\x90\x90\x90\x90\x90\x90" is a filled string, meaningless"\x7c\xfb\x12\x00" returns the address for the overridden function(3) 0x
: The UUID is created from 6 integer domains totaling 128 bits (32 bits as Time_low segment, 16 bits as Time_mid segment, 16 bits as time_hi_version segment, 8 bits as Clock_seq_hi_ Variant segment, 8 bits as Clock_seq_low segment, 48 bits as node segment); int: Directly specifying an integer length of 128 bits to create a UUID object; version: (optional) Specify the versions of the UUID, from 1 to 5, once this parameter is specified, the resulting UUID will have its own variant (variant) and
The first collection, used to look at1. Euclidean distance (Euclidean Distance)Euclidean distance is one of the easiest distance calculations to understand, derived from the distance formula between two points in Euclidean space.(1) Euclidean distance between two points a (x1,y1) and B (X2,y2) on a two-dimensional plane:(2) Euclidean distance between two points a (X1,Y1,Z1) and B (X2,Y2,Z2) in three-dimensional space:(3) Euclidean distance between two n-dimensional vector A (x11,
verify the data sent this, in the receiver we use the data received by using "mode two division" divided by the use of polynomial, if the remainder of 0 indicates that there is no error in the transmission process, if not 0 indicates that there are errors in the transmission.
Step1: Confirm the use of polynomials, usually we will adopt a fixed polynomial, common several kinds of generating polynomials such as:
Crc8=x8+x5+x4+x0
Crc-ccitt=x16+x12+x5+x0
to load the program. There will be many loops in the shell program. When dealing with loops, you can only let the program run forward, basically not let it jump back, you need to think out of the loop. Do not use Peid to query entries. You can track entries in one step to improve the capability of manual entry searching.Load the program with OD.Confirm an entry warning, and the Od prompts the program to shell. If you choose not to continue the analysis.Stop here0040D001 60 pushad first remember
ancestor classes do not have a processing method that corresponds to this message number, call DefaultHandlerend;procedureGetdynamethod;{function Getdynamethod (vmt:tclass; selector:smallint): Pointer; }Asm{-EAX VMT of Class}{SI dynamic Method index}{{ZF = 0 if found}{trashes:eax, ECX}PUSH EDIXCHG Eax,esi//Exchange eax and ESI values, after which the VMT entry address in ESI, EAX is the message number, i.e. the code of the corresponding dynamic methodJMP @ @haveVMT@ @outerLoop:MOV Esi,[esi]@ @h
769 Items in swapper_pg_dir. The first two items are linear address ing for the user, and the last two items are linear address ing for the kernel. The reason why two items in the global page directory can be mapped to 8 Mb is 2 × 1024 (1024 items in the page table) × 4 K (the size of one page) = 8 m. In fact, initializing the kernel page table is not a hard rule to map the first 8 MB of RAM. This depends on the configuration of your kernel (I think it is 8 Mb ing in most cases ). In startup_32
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.