With the front: + + (-) There are too many confusing places, (i++) + (i++) and (++i) + (++i) What is the difference? If you understand it from the machine's point of view, it will be enlightened.
Let's take a look at the procedure:
int main() { int i=3; int j=(i++)+(i++); // int j=(++i)+(++i); printf("%d,%d\n",i,j); }
(1) Under VC 6.0:
for (i++) + (i++):
Result: i=5,j=6
The corresponding assembly code is (with detailed comments):
8B 45 FC mov eax,dw
Codefunction Strtohex (Const str:ansistring): ansistring;AsmPush EBXPush ESIPush EDITest Eax,eaxJZ @ @ExitMOV Esi,edx//Save the EdX value, the address used to generate the new stringMOV edi,eax//Save original stringMOV edx,[eax-4]//Get string lengthTest Edx,edx//Check length
Virus program source code instance analysis-CIH virus [3] code, you need to refer to the jmp ExitRing0Init; exit Ring0 level
; Size of the merged code
CodeSizeOfMergeVirusCodeSection = offset $
; New IFSMgr_InstallFileSystemApiHook function call
InstallFileSystemApiHook:
Push ebx
Call @ 4
@ 4:
Pop ebx; get the offset address of the current command
Add ebx, FileSystemApiHook-@ 4; the offset difference is equal to the offset of FileSystemApiHook.
Push ebx
Int 20 h; call Vxd to remov
Protection Mechanism
[Statement]I write articles mainly for communication, and hope that you can maintain the integrity of the article during reprinting.
[Preface]This time I focused on the protection mechanism and did not write any shell removal method. In fact, I have misled many kind audiences. The most important thing to know about a shell software is its protection mechanism, which I learned later. The following describes some protection mechanisms. This is only for everyone and me to lear
-click a menu and choose search> all reference text strings and click: Of course, it is more convenient to use the above super string reference + plug-in. However, our goal is to be familiar with some ollydbg operations. I will try to use the built-in functions of ollydbg with less plug-ins. Now, in another dialog box, right-click it, select the "Search Text" menu item, and enter "Wrong serial, try again !" The start WORD "wrong" (note that the search content is case-sensitive) to find one:
class address instead of the Child class address? This involves implementing restrictions within compilation and a comprehensive understanding of a system problem. It is difficult to find the answer by analyzing the phenomenon.
We call it again through pointers.C150 * PT = OBJ;Pt-> Foo ();The Assembly command corresponding to the second line of code is:01 00423f8b mov eax, dword ptr [EBP + fffff73ch]02 00423f91 mov ECx, dword ptr [eax]03 00423f93 mov edX
more information.
In the C language version, the while (FAC * FAC For instructions, seeMoV edX, s_facMoV eax, FACLea edX, [edX + eax * 4 + 4]; (FAC + 2) * (FAC + 2) = s_fac * 4 * FAC + 4MoV s_fac, EDXAdd FAC, 2; FAC + = 2The basic principle is that if s_fac is the square of the FAC, a mathematical formula (FAC + 2) is used for finding (FAC + 2) ^ 2) ^ 2 = FAC ^
choose search> all reference text strings and click:
Of course, it is more convenient to use the above super string reference + plug-in. However, our goal is to be familiar with some ollydbg operations. I will try to use the built-in functions of ollydbg with less plug-ins. Now, in another dialog box, right-click it, select the "Search Text" menu item, and enter "Wrong serial, try again !" The start WORD "wrong" (note that the search content is case-sensitive) to find one:
Right-click the str
, which is read in Do_page_fault and combined with exception table to modify the method, No time for in-depth study, interested can continue to see.
The Copy_from_user code is as follows:
Static unsigned long __copy_user_intel (void __user *to, const void *from, unsigned long size) {int d0, D1; __asm__ __volatile__ (". Align 2,0x90\n" "1:MOVL (% 4),%%eax\n" "Cmpl $67, %0\n "" Jbe 3f\n "" 2:movl (% 4),%%eax\n "". Align 2,0x90\n "" 3: MOVL 0 (% 4),%%eax\n "" 4:MOVL 4 (% 4),%%
$0x200, % edx
0x00c: addl % edx, % ebx
0x00e: je dest
0x013: rmmovl % ebx, 0 (% edx)
0x019: dest: halt
In our SEQ processor, an instruction is executed in one clock cycle (that is, two high-level time intervals.
At the start of the clock cycle 3 (AT), a high-level entry, address 0x00c loaded into the program counter PC. In this way, the MCU (Master memory con
Author: serious snowAfter a user clicks log on to the game, the server sends a piece of data to the local device: The selected part is the random key sent from the server to the Local Machine (it is not known that the key combination is inappropriate because it will be encrypted as data ).... The rest are some data packet features and offset sizes...Then this key is used for a series of processing .... The following authentication information is sent to the server: The data in the selected part
Reference: http://blog.csdn.net/eagler_hzh/article/details/6550841
In fact, the function to be extracted is the void Xid _cpu_detect (void) in x264 \ common \ CPU. C. The source file
int x264_cpu_cpuid_test( void );void x264_cpu_cpuid( uint32_t op, uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx );void x264_cpu_xgetbv( uint32_t op, uint32_t *eax, uint32_t *edx );uint32_t x264_cpu_detect( void ){
;}}Else{Float F = (float) SQRT (x * x + y * Y + z * z );If (F! = 0.0f){F = 1.0f/F;X * = f; y * = f; z * = F;}}}
// Calculate the cross multiplication using two vectors and save the result to this vector.Void vector: Cross (const vector * pu, const vector * PV){If (g_busesse2){_ ASM{MoV eax, Pu;MoV edX, PV;
Movups xmm0, [eax]Movups xmm1, [edX]Movaps xmm2, xmm0Movaps xmm3, xmm1
Shufps xmm0, xmm0, 0xc9Shufps x
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.