push edi
00402099 lea edi, [ebp-40h]
0040209C mov ecx, 10 h
004020A1 mov eax, 0 CCCCCCCCh
004020A6 rep stos dword ptr [edi]
252: return 0;
004020A8 xor eax, eax
253 :}
004020AA pop edi
004020AB pop esi
004020AC pop ebx
004020AD mov esp, ebp
004020AF pop ebp
004020B0 ret
250: static int process ()
251 :{
00402090 push
issue CCDebuger has been very clear. If you have any questions, read the article. We directly open the RUN trace, add the "entry to all function processes", and return to the "Check" button in the program. In this case, open the RUN trace record in OllyDBG to find the key location, then you can break down at this position. The program is broken here.004010E2 |. 8BFE mov edi, ESIUser name is sent to edi004010E4 |. 03F8 add
It turns out that there have been checksum-related cracking on the internet. I will interview the checksum compilation code and the vb version for cracking.Currently, I am using the checksum code of vb.Assembly Code of checksum:GOOGLECHECK proc nearVar_8 = dword ptr-8Var_4 = dword ptr-4Url_offset = dword ptr 8Url_length = dword ptr 0ChMagic_dword = dword ptr 10 hPush ebpMov ebp, espPush ecxPush ecxMov eax, [ebp + url_length]Cmp eax, 0ChPush ebxPush esiMov esi, [ebp + magic_dword]; = 0xE6359A60Pu
to the string lengthAdd ECx, Len // Add the character LengthINC ECxAdd ECx, 4 // Add the original entry RVA ValueAdd ECx, 4 // Add four bytes of the getmodulhand addressMoV dword ptr [ESI + 28 h], ECxLea ESI, ChaoMoV EDI, dword ptr [eax + 14 H]Add EDI, imagebaseMoV ECx, LenINC ECxClDRep movs byte PTR [EDI], byte PTR [esi]Lea ESI, address // address for writing g
temporary base address in the item bar where the person involved is located.0dd97468, search for this address to get several codes to monitor the access respectively. Move the mouse to change the person's character to get the code:0076b9d1-3B 3D 64811003-cmp edi, [03108164]0076b9d7-75 2a-JNE 0076ba030076b9d9-8B 84 B7 04040000-mov eax, [EDI + ESI * 4 + 00000404]Obviously [
Tags: OS SP Div code BS as method simple functionSTOs includes stosb stosw stosd. The registers involved are eax and EDI. The functions are as follows: stosb copies values in Al to byte ptr es: [EDI, at the same time, EDI ++ stosw copies the value in ax to word ptr es: [EDI], and E
in the operation, such as Movl $foo,%eax equivalent to Intel's mov eax, word ptr foo
Long jumps and calls are different in format, att for ljmp $section, $offset, while Intel is JMP Section:offset
The main difference is these, the other details are many, here is a concrete example to illustrate
#cpuid. S Sample Program
. Section. Data
Output
. ASCII "The processor vendor ID is ' xxxxxxxxxxxx '/n '
. section. Text
. globl _start
_start:
MOVL $,%eax
Cpuid
MOVL $output,%
ptr [ebp-4]14.013b1059 Add Eax,esi15.013b105b Add Eax,edx16.013B105D mov edx,dword ptr [__imp_std::endl (13B204CH)]17.013b1063 Add Ecx,eax//The top 3 Add instructions add Ebx,ecx,edx,edi to ECX, that is, the ECX is the cumulative result
Visible compiler generated code is the best code, eliminate the intermediate variable i, reduce the number of cycles, eliminate the CPU can not be disorderly execution of the factors.
BTW:
One might have a question: i
loadRetDllentry ENDP
To convert the value in Edx:eax to a decimal output form string, which is familiar, as in the previous example!OUTEDXEAX proc \; For example: edx=0,eax=01234567h, the converted string is:Uses ebx esi edi,lpstring; -> ' 19088743 ', 0mov edi,lpstring; point to address where results are storedMOV esi,lpstring
mov ecx,10; convert to Decimal. While eax!=0 | | Edx!=0Push EAXMOV Eax,edxXOR
1 parameter passing (default calling convention)
Use VC6.0 to create a new empty console application, create a new source file Main.c, write the following code, pay attention to debug compile, do not use release, lest the code by VC optimization, disassembly does not correspond.
int addint (int a, int b)
{
int c = a+b;
return c;
}
int main ()
{
int x = AddInt (1, 3);
return 0;
}
In the main function into the braces down, press F5 run, the program is broken, then press the combination of
this limit//run: Run.exe automatically compiles pm16.c and pm32.c and then generates an IMG and calls Bochs to run the program// Hint: Please first compile run.c file with yc09, generate Run.exe Program//After modify PM16.C and pm32.c code, can run Run.exe view effect directly, click Enter again compile run//author: Miao//Time: 2010-2-8 #define Ycbit 32//Tell the compiler to compile the program in 32-bit format #define ycorg 0x0//This value generates an address base offset for variable function
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
process. For different versions of NT systems, the kpcr structure is quite stable. We can even obtain the ETHREAD pointer of the current thread from the memory [0ffdff124h.
3. Replace the token of the current process with the system token. Because the token offset in eprocess is not fixed, you need to first find the offset value and then replace it. Ntoskrnl.exe exports the psreferenceprimarytoken function, which contains the operation to get the token from eprocess. We need to extract the offs
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.