and an internal counter of the repeated (REP) prefix command and LOOP command.(6) edx is always used to place the remainder produced by integer division.(7) esi/edi are called "source/destination index register" (source/destination index), because in many string operation commands, DS: ESI refers to the source string, While ES: EDI points to the target string.On a 32-bit platform, ESP is reduced by 4 bytes
CPU switches from user mode to privileged mode, then jump to the kernel code to execute the exception handling program.In the "B INT" command, the value 0x80 is a parameter. In exception handling, the parameter determines how to handle the problem. In the Linux kernel, an int 0x80 exception is called a system call.The values of C eax and EBX registers are two parameters passed to the system call. The value of eax is the system call number, 1 indicates _ exit call, and EBX indicates the paramete
same as that of the function I wrote (you can also say that the exponent in the function I wrote is: change the = 1/gamma statement to exponent: = gamma, which is the same as the setgamma method of GDI + ):
Procedure imagesetgamma (VAR data: timagedata; GAMMA: single); var I: integer; exponent: Double; gammatab: array [0 .. 255] of byte; begin exponent: = 1/gamma; // This sentence is changed to exponent: = gamma;, which has the same effect as the setgamma parameter of GDI + for I: = 0 to 255 do
The code from chapter 7 of Intel assembly language programming (fifth edition) uses the AAA (ASCII adjust after addition) command to adjust the results after the ASCII addition. The source code is as follows:
Title ASCII addition (ascii_add.asm)
; Perform ASCII arithmetic on strings having
; An implied fixed decimal point
Include irvine32.inc
Decimal_offset = 5; offset from right of string
. Data
Decimal_one Byte "100123456789765"; 1001234567.89765
Decimal_two Byte "900402076502015"; 900402
I remember writing a HOOK API article (C/C ++ HOOK API (in-depth analysis of the principle-loadlibrarya). The main principle of this article is to construct a code byte, modify the first 16 bytes of the loadlibrarya function, and then jump to the custom function. When you call a normal function, unhook it again. In this way, when you call a function again, the unhook and hook operations appear too frequent. Moreover, the hook and unhook were designed as thiscall at the time. Therefore, maintaini
{2002.8.5 kingron}
{Source: Source string}
{Sub: Sub string}
{Return: Count}
{Ex: strsubcount ('abccdcd', 'bc') = 2}
Function strsubcount (const source, Sub: string): integer;
VaR
Buf: string;
I: integer;
Len: integer;
Begin
Result: = 0;
Buf: = source;
I: = pos (sub, Buf );
Len: = length (sub );
While I Begin
INC (result );
Delete (BUF, 1, I + len-1 );
I: = pos (sub, Buf );
End;
End; {strsubcount}
{The following function returns the position after the specified position of substr in S}{Example:
KiInterruptTemplate .. That's it... The KiInterruptTemplate code is in ntoskrnl/ke/i386/Traps. s ....
. Func KiInterruptTemplate_ KiInterruptTemplate:
/* Enter interrupt trap */INT_PROLOG kit_a, kit_t, DoPushFakeErrorCode
_ KiInterruptTemplate2ndDispatch:/* Dummy code, will be replaced by the address of the KINTERRUPT */Mov edi, 0
_ KiInterruptTemplateObject:/* The jump instruction address will be replaced with the actual address of the function to b
corresponding to the main function is as follows
123456789101112131415161718192021222324252627282930313233343536
7: int main()8: {00401020 push ebp // ebp初始为0018FF84h压栈,压栈后esp = 0018FF48h - 4 = 0018FF44h00401021 mov ebp,esp // ebp保存栈顶0,ebp=esp=0018FF44h00401023 sub esp,48h // esp -= 48h开辟了一段栈空间,留待后面保存局部变量,此时esp=0018FF44h-48h=0018FEFCh00401026 push ebx 00401027 push esi00401028 push edi // ebx、esi和
program, and no other auxiliary components. To control the register of passed parameters, you can extract the generic gadgets in the program initialization function.Enter Objdump–d./vul to observe the _libc_csu_init () function.There are two accessories available:Accessories 14005f0: 4c 89 ea mov %R13,%RDX 4005f3: 4c 89 f6 mov %R14,%RSI 4005f6: 44 89 ff mov %R15d,%EDI 4005f9: 41 ff 14 dc
"All rights reserved, please specify the source of the reprint." Source: http://www.cnblogs.com/joey-hua/p/5598451.html "In the fork function of the previous article, we first call Get_free_page to request a page of memory for the new task's data structure, in MEMORY.C:/** Gets the first (actually the last 1:-) free pages and marks it as being used. If there is no free page, * returns 0. */////take the Idle page. If no memory is available, 0 is returned. Input:%1 (ax=0)-0;%2 (Low_mem),%3 (cx=pag
, but what else can I print?This is actually the value of the Print program counter.First say register, besides $pc, there are%ESP,%EDP and so on,Specifically can print those, but also involved in another command, look at one example:[CPP]View PlainCopy
(GDB) I (NFO) r (eg)
(GDB)
EAX 0x80484f0 134513904
ECX 0xbffff304-1073745148
EdX 0xb 11
EBX 0xb7fc2ff4-1208209420
ESP 0xbffff240 0xbffff240
EBP 0xbffff268 0xbffff268
ESI 0x0 0
EDI
Debug versionESP stack top pointerEBP holds stack pointer Empty program: Int main () { 00411360 push ebp, press into EBP 00411361 mov ebp,esp; EBP = ESP, keep esp, wait for function call to resume, ESP is definitely used in a function call. 00411363 Sub esp,0c0h; esp-=0c0h (192); Leave temporary storage for the function ; put the values in other pointers or registers into the stack to use them in the function. 00411369 push ebx; Press into EBX 0041136A push esi, press into ESI 0041136B pu
From [wenjuliu25]: HelloWorld disassembly Analysis
Lab environment:Visual c ++ 6.0
Objective: To analyze the memory allocation of a simple c program during program execution using assembly language
/******* Mymain. cpp *********/
1: # include
2: int main ()
3 :{
4: int x = 1;
5: printf ("Hello Canney \ n ");
6: return0;
7 :}
/******* Mymain. asm *********/
1: # include
2: int main ()
3 :{
00410950 push ebp
00410951 mov ebp, esp
00410953 sub ESP, 44 h // ESP = esp-0x40, allocate stack space t
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.