I read an article on IAT encryption processing. I learned how to fix IAT after arriving at OEP. If there is any error, please advise.Copyright: evilangel
Test shell is The original program kryton The Krypter [v.0.2]
I. Shell check:
PEiD shell check:Kryton 0.2-> Yado/Lockless
2. Arrive at OEP
First, load the OD, ignore all exceptions, and stop
00434000> 8B0C24 mov ecx, [esp];
Kernel32.7C81702700434003 E9 0A7C0100 jmp 0044BC1200434008 AD lods dword ptr [esi]00434009 42 inc edx0043400A 40 inc eax00
, the application should assign the eax register a value of H and execute the cpuid command:
MOV EAX, 80000000HCPUID
After the execution is complete, the results will be saved in the eax register. To return valid CPU extension information, the eax register should always pass a value greater than or equal to H and less than or equal to the value of the result.
In any case, if the value passed to eax is greater than the maximum value it can accept, or the function that returns the extended informa
From http://zerray.com/
Looking at the hooks in Win32 compilation, I was wondering how to write a whole-person program that changed the keyboard layout.
Check the information and find that the underlying keyboard hook (wh_keyboard_ll) can be implemented. First, install and uninstall the HOOK:
Installhook proc hins: DWORDInvoke setwindowshookex, wh_keyboard_ll, ADDR keyproc, hins, nullMoV hhook, eaxRETInstallhook endp
Uninstallhook procInvoke unhookwindowshookex, hhookRETUninstallhook endp
Like
will only press the parameter stack and then call it, but this is not the form of _ fastcall. it is also because it does not support _ fastcall, which makes assembly and other languages (such as C) mixed programming difficult once _ fastcall is involved.
We all want to adopt some strategies to make MASM support the _ fastcall call method. In other words, it enables MASM to define and call functions of the _ fastcall type.
To achieve this goal, we must first understand the characteristics of t
again!" In this error dialog box today !" . Start OllyDBG, select the menu File> open the CrackMe3.exe file, and we will stop here:
In the Disassembly window, right-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
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
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
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.