functions are slightly different from the previous ones. The print function appears virtual before. However, this virtual has played a huge role. It is no exaggeration to say that, without virtual functions, there is basically no design pattern, which cannot reflect the great superiority of the C ++ language in object-oriented design. Let's take a look at how this virtual works?
76: employee p;
0040128D lea ecx, [ebp-10h]
00401290 call @ ILT + 45 (employee: employee) (00401032)
00401295 mov d
, for a loop statement, the%EBX value is increased by 1, and when%EBX is no more than 5 o'clock, repeat the process, i.e.%ebx=%ebx+1;%eax=%ebx+1,%eax=%eax* the value of the previous validated number, comparing the%EAX to the value currently being validatedTherefore the first value is 1, the second value should be (+) *1=2, the third value is (2+1) *2=6, the fourth value is (3+1) *6=24, the fifth value is (4+1) *24=120, and the sixth value is (5+1) *120=720.
Phase_3
Phase_3 also cal
And the list of awesome-* series
Bayandin/awesome-awesomeness GitHub
sqlmap!
goagent!
Yes, there's shadowsocks!.
Open EdX
Open EdX is committed to creating a powerful and flexible, open and large-scale online classroom platform. Also used to study learning and distance education
After graduation, the most familiar thing is this project.
Tall may not be, technically not stunning, after all, is busine
:00440f2c |. 8b45 FC MOV eax,dword PTR ss:[ebp-4]00440f2f |.BA 14104400 MOV edx,crackme3.00441014; ASCII "Registered User"00440f34 |.E8 F32BFCFF call crackme3.00403b2c; The key is to go with F7.00440f39 |.JNZ short crackme3.00440f8c; This is the end of the jump.00440f3b |. 8d55 FC LEA edx,dword PTR ss:[ebp-4]00440f3e |. 8b83 C8020000 MOV eax,dword PTR Ds:[ebx+2c8]00440f44 |. E8 D7FEFDFF Call Crackme3.00420e
program writer's quality decision.The inline assembly is passed in C + +The results of the actual discovery of 500W data are as follows:Algorithm name inline assembly algorithm time C + + algorithm timeBubble sort 5W Data slow dying 5W data slow to deathQuick sort 600ms about 500ms around------------------Why there is a fast sorting algorithm, the results of the assembly is not a C + + efficiency is high, because I write the inline assembly is not automatically generated by the compiler high ef
the quality of the high and low decision.
Inline assembly is passed in C + +
actually found the 500W data sorting results are as follows:
Algorithm name inline assembler algorithm time C + + algorithm time
Bubble sort 5W data slow to die 5W data slowly dying.
Quick sort 600ms about 500ms around
------------------Why there is a fast sorting algorithm, the compiled results are not as high as C/s + + efficiency, because I write inline assembly without compiler automatic generation of high efficien
body | ---------> @ 2|------> | -------------------- +|| Decryptor || ---------> @ 3+ -------------------- +@ 1 is a call constructed by computation, because the call location must be determined by @ 2.@ 2 is an encrypted virus.@ 3 is an encryptor used to decrypt @ 2, which is transformed by code obfuscation.In this way, every time other files are infected, the re-generated code will no longer have a fixed feature, which will invalidate the feature scanning mechanism.
2.1 random number design:T
layout is skipped.
Next let's take a look at the virtual function calling Pt-> Foo (); Through the pointer. The resulting assembly code is as follows:01 004230f6 mov eax, dword ptr [EBP + fffff900h]02 004230fc mov edX, dword ptr [eax]03 004230fe mov ESI, ESP04 00423100 mov ECx, dword ptr [EBP + fffff900h]05 00423106 call dword ptr [edX]In row 1st, the address directed by PT is moved into the eax register,
the siteCall makefs4gbsegment; the returned FS segment can be 4 GB memory. EBX =.############# Map the code to a linear address of 80000000 H + CS * 4, avoid NTS not mapped to memory reserved by our code ############MoV eax, FS: [EBX + 800 H]; eax = Linear address up to 10 bits 400 h * 4 = 800 H, determine the location of the page Directory table pointed to in S3.And eax, 0fffff000h; remove the obtained Level 2 page table attribute bit. eax = 80000000h linear address Level 2 page table physical
add eax,0x8; Pptr+2 003cc57c; In C language, the operation of pointers is 003cc57c based on pointer type; An int pointer plus 1 means that the address it points to is moved backward in length to a 003cc57c; The distance of the int size, which is 4 bytes. If it's a word type, move backwards by 2 bytes. 003cc57f Push eax003cc580 mov ecx,[local.7]003cc583 add ecx,0x4; Pptr+1 003cc586 push ecx003cc587 mov edx,[local.7]003cc58a push
(MOV)
(An immediate number is actually a constant integer.) different operand type combinations supported by the data transfer Directive
What is inside the parentheses represents the memory address.
(For example,%eax, which represents a memory address.) Simple addressing mode
If we have an operand that accesses memory, then how is the memory address calculated or referred to as how it is addressed.
(-Indirect addressing
Take Movl (%ECX),%eax as an example:
The register ECX inside the value a
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.