The usage of "[]" has been described in "FAQ" and is cited as follows:
1, push DWORD ptr [024c1100] pressure stack 024c1100 value of two words2, CMP eax,[ebp+14] eax-ebp+14 valid value, does not retain the value, mainly looks at the sign bit3, CMP byte ptr [eax],46 byte type eax-46, see sign bit4, Lea eax,[edx-02] edx-02 valid value (an address value) to EAX5, MOV ecx,[edx+08] edx+8 value as the address, this address points to the value of ECX
I am going to add a few more examples of what I have
This vulnerability is manifested in MSVidCtl. dll (xpsp2: 6.5.2600.2180, vista: 6.5.6000.16386). MSVidCtl. dll is the system standard component. The cause of the vulnerability is that the persistent byte array (VT_UI1 | VT_ARRAY) is incorrectly read. Attackers can construct special files to trigger this vulnerability, which leads to arbitrary code execution with the current process permission.
The following is an analysis of the vulnerability code:Take MSVidCtl. dll of 6.5.2600.2180 as an exampl
-specified check of v56archv archive shipmentV56atktx: Number of the input line of the modified textV56bmod transmission processing: Field ModificationV56diinjection shipping process: determine the distanceV56fcopy shipping processing: copying delivery dataV56fstat shipping handling: active when a status is setV56i0001 IDOC tpsdls: changes in the delivery header GroupV56i0002 IDOC tpsdls: Changes to the delivery Project TeamV56i0003 IDOC tpsdls: Modify the packaged data groupV56i0004 IDOC tpsdls
] // obtain the address of the method table. The first four bytes of the reference type on the stack are the address of the method table.00000079 call dword ptr [eax + 38 H] // the address of the function to be called is calculated every time a virtual function is called.2017007c NOPClass_test.test3 (); // static function00000083 call ffeec140 // call a function00000088 NOPPublic override string tostring () // subclass calls the parent class function{// Omitting the previous AssemblyReturn base.
will confuse us. Continue to look down:
Code: 004bd61e cmp edi, 0ahCode: 004bd621 JG short loc_4bd62fCode: 004bd623 mov dword ptr [EBX + 90 H], 0chCode: 004bd62d JMP short loc_4bd639Code: 004bd62f; zookeeperCode: 004bd62fCode: 004bd62f loc_4bd62f:; Code xref: sub_4bd5a8 + 79jCode: 004bd62f mov dword ptr [EBX + 90 H], 10 h
The above code sets whether 12 or 16 cycles are used for information encryption based on the length of the key table.
Code: 00
The annual "big project" for reinstallation of the system has been under construction.
Sort out the tools and materials of last year. Today, we start to give our customers a bit of gameplay assistance. (The customer will not mind if it has been more than a year)
Today is the first article.
Analysis notes of long Xiang mi Chuan
Blame
Breakthrough:
Ce searches for the change value and does not stop selecting the blame. Locate the following:Code:
00413b5e-89 be B0 00 00-mov [ESI +
area of the last 48 hours.
00401039 Lea EDI, [ebp-48h]
0040103c mov ECx, 12 h
00401041 mov eax, 0 cccccccch
00401046 rep STOs dword ptr [EDI].
In the next three stack commands, EBX, ESI, and EDI are pushed into the stack, which is also part of "protecting the site". These are some data of the main function execution. EBX, ESI, and
caller must be responsible for Stack cleaning when using this convention. Because the parameters are variable, this Convention is more flexible, but the performance is relatively low. In the generated code, the letter number has a _ (underline) prefix.Example:Int _ cdecl Add (int a, int B){Return (a + B );}Function call:Add (1, 2 );
Push 2Push 1Call @ Add; in fact, the expression used by the compiler to locate the function is omitted here.Add esp, 8; clear Stack
Function body:
Push ebpMov ebp,
program can be interrupted here.
Figure 10
After many trace analyses, we found that the following modifications can make the program run normally without prompting registration. If you want to study the registration algorithm of the software, you have to track and analyze J:
Nqqtools. checkreg. Check
00000093 0f B6 F0 movzx ESI, Al; Modify mov Al, 01
00000096 8B C6 mov eax, ESI; changed to mov ESI, eax
00000098 25 ff 00 00 00 and eax, 0ffh
2017009d 89 45 E0 mov dword ptr [ebp-20h], eax
201700
the call command. This command will return the address, that is, the next command location (eip, command pointer) is pushed into the stack, such
Eip = 0x00401363 before call (next eip = 0x00401368)
Eip = 0x0040100A, esp = 0x0012FEF4 after call
Then the call ends. __cdecl indicates that the last ret command of the function will pop the stack top to the eip pointer.
Eip = 0x00401368 ESP = 0x0012FEF8
Then add esp, 0xc, Here 0xC = 12, that is, the three Dwords are the number of pushes pushed in fro
choose four bytes starting from the 40339c address, mainly to let you know how to manage the hardware breakpoint in advance, because the hardware breakpoint can only select up to four bytes. The selected part is displayed in gray. After the selection, release the left mouse button and right-click the selected gray area: after the operation, we have set the memory breakpoint (note that the memory breakpoint is only valid in the current debugging process, that is to say, if you re-load the progr
Windows process. With the EXE main program module, the data size to be checked for integrity check is generally between several megabytes and dozens of megabytes. A good detection algorithm is necessary for such data volumes. D2hackmap uses a policy to create a "clean" module for each module to be scanned, and then compare the two modules by byte. In x86, the memory has dedicated and efficient compilation commands cmpsd and cmpsb.
DWORD _ declspec (naked) _ fastcall mymemcmpd (DWORD nsize, void
]. dwofs indicates that the key is pressed or released.// Didod [I]. dwdata records the state of the key. The highest bit of low byte is 1, which indicates that the key is pressed, and 0 indicates that the key is released.// Generally, didod [I]. dwdata 0x80 is used for testing.}Return s_ OK;}How is the keyboard status obtained? See the following IDA analysis results.. Text: 6d18c5ea _ ckbd_getdevicestate @ 8 proc near; Data xref:. Text: 6d18c37co. Text: 6d18c5ea. Text: 6d18c5ea arg_0 = dword p
is located.MoV eax, [eax + 8] // A list_entry8 byteIn the current eax, it is the start position of the kernel. dll in the memory image, that is, its handle value.
After finding kernel. dll, the following part is related to the PE file format,
MoV EBX, eax // get the starting address of kernel32.dllMoV ESI, dword ptr [EBX + 0x3c] // u get PE Header in e_lfanewMoV ESI, dword ptr [ESI + EBX + 0x78] // U export directory RVAAdd ESI, EBXMoV EDI, dword ptr
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.