simple removal of the single and dual processes of the Armadillo protective shell to make it no longer difficult.Armadillo 1.xx-2.xx simple process detachment1) Prepare and collect all informationUse PEiD to detect "Armadillo 1.xx-2.xx-> Silicon Realms Toolworks", use Armadillo Find Protected V1.4 in Chinese to view the protection mechanism, and Find that the target is Protected by Armadillo, protection System Authorization level (Standard Edition); The protection mode used by the program is st
that the data code can be received.Flashdata bit 20h.264; data refresh mark. When the Communication receives the received data, it indicates that the receiving is complete and the command control process can be entered.
CollationTx_bit_finish bit 20h.3; mark of the completion of the Current byte data transmission
Org 0000 hJMP startOrg 0023 HJMP SintSint:JBC Ri, rxwk; if the receiving is interrupted, the RI flag is cleared and forwarded to the receiving for processing.CLR Ti; if sending is inte
;parameters.deviceiocontrol.iocontrolcode;
Switch (IoControlCode)
{
Case Ioctl_write:
__asm
{
Push EAX
Push edx
//---------------------------------------------------
The following code writes the primary boot area with the I/O port
MOV dx,1f6h//To read the disk number and magnetic number one
MOV al,0a0h//Disk 0, head 0
Out Dx,al
MOV dx,1f2h//nu
, such as Read_track, where POPs and push directives were used, so it was set up to load the SETUP.S module at the back of the Bootsec.s; get the drive parameters, this should be a value floppy , mainly obtains the number of sectors per track, outputs "Loading system ..." in the screen, then loads the system module that is the kernel module, determines the root file system device, jumps between segments, and executes in the SETUP.S; Here is my understanding of some of the code in BOOTSEC.S. Bo
;
}
Extrn CODE (COUNT)
ORG 0000H
JMP MAIN
ORG 0003H
LJMP EXT0
Main:mov Tmod, #01H; set to timer and 1 for mode
CLR P3.1; In order to stabilize the system, the P3.1 hardware must be grounded and the software must be zeroed
Setb P3.2
SETB EA; Open Total interrupt
CLR IT0; Set to level trigger, low level triggers external 0 interrupt MOV SP, #60H
Start:mov R6, #0; Enter an interrupt identification
MOV R7, #
pointers and references
We use the following simple code to analyze pointers and references in depth:
# Include
Using namespace STD;
Int main (INT argc, char ** argv)
{
Int I = 1;
Int ref = I;
Int x = ref;
Cout
Ref = 2;
Int * P = I;
Cout
}
Use the above CodeG ++ test. cCompile and decompileObjdump-d a. OutTo obtain the assembly code of the main function:
08048714 8048714: 55 push % EBP8048715: 89 E5 mov % ESP, % EBP8048717: 83
What is the code after this code Disassembly?
# Include
Long test (int a, int B){A = a + 3;B = B + 5;Return a + B;}
Int main (int argc, char * argv []){Printf ("% d", test (10, 90 ));Return 0;}
Let's look at an overview.
16: int main (int argc, char * argv [])17 :{00401070 push ebp00401071 mov ebp, esp00401073 sub esp, 40 h00401076 push ebx00401077 push esi00401078 push edi00401079 lea edi, [ebp-40h]00401_c mov
is typically used to store the segment address to access the data. For example, if we want to read the contents of the 10000H unit, we can do it with the following program sections:mov bx,1000h mov DS,BX mov al,[0][......] Represents a memory unit, 0 represents the offset address of a memory cellTransmission of Word8086CPU is a 16-bit structure that can transmit 16 bits of data at once, i.e. one word at a
If you returned a struct object, what would the return statement do? Here is the test code
#include using namespace Std;struct BIG{Char buf[100];int i;Long D;}B,B2;Big Bigfun (Big B){b.i=100;return b;}int main (){B2=bigfun (B);return 0;}To set a breakpoint at the beginning and end of main8:int Main ()19: {004012A0 Push EBP004012A1 mov Ebp,esp004012a3 Sub esp,118hPuzzled at first, and analyzed for a long timeThe original (118h-40h) remaining memory bl
Topic: Enter two strings, where two characters are equal in number of strings. Then compare the characters contained in the two strings and, if they are exactly equal, output ' match ', otherwise the output ' No match '.
Data segment STR1 DB DUP (' $ ') len Equ $-str1; get str1 length str2 db dup (' $ ') MATC D B ' match$ ' Nomh db ' No match$ ' data ends code segment assume Ds:data,cs:code Start:mov ax,data m
OV Ds,ax mov es,ax
2 years ago, when the "shock wave" virus broke out, I had an analysis of its shellcode, and now I gave it to the analysis I wrote,
Let's see what a generation of poison is. In general, Shellcode are written in this way, so long as the hook Shellcode must invoke the API to judge ESP and EIP
If the difference is within 0x1000 (that is, the code is running on the stack), you can basically confirm that the system is under a buffer overflow attack and that the process must exit immediately.
Of course
prompt in the ocean of strings: "You have purchased and registered the shared data protection expert advanced Edition Software, thank you for your support! ". This prompt is no longer clear. Double-click it and you will be directed to the corresponding code. We still perform analysis in the order of first flow and then algorithm, just like the previous analysis process.
An amazing burst"First, find the place where the registration process starts, follow the registration success prompt to look u
some examples:
L simple _ asm block:
_ Asm
{
Mov al, 2
Mov dx, 0xD007
Out al, DX
}
L add the _ asm keyword before each Assembly command:
_ Asm mov al, 2
_ Asm mov dx, 0xD007
_ Asm out al, DX
L because the _ asm keyword is a statement separator, multiple Assembly commands can be placed on the same line:
_ Asm
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
Translate C language into assembly language
If(DxCX)X=1ElseX=2
Main proc MoV EdX, 4 MoV ECX, 5 CMP EdX, ECx Jle L1 MoV X, 2 JMP Next L1: MoV X, 1 Next: MoV Eax, X Call Writedec RET Main endp
If(BX>CX)X=1
subthread) can obtain the data.
1. debug the thread with a debugger
1) stack call
The following code is used as an example.Imports System. Threading
Public Class Form1
Private Sub button#click (sender As System. Object, e As System. EventArgs) Handles Button1.Click
Dim main_x As Integer
Main_x = 5
Call sub1 (main_x)
End Sub
Private Sub sub1 (sub1_x As Integer)
Dim jg As Integer
Jg = sub1_x * sub1_x
Call sub2 (jg)
End Sub
Private Sub sub2 (sub2_x As Integer)
Dim jg As Integer
Jg = sub2_x * 2
to the 3 mode, that is, the 80x25 color mode (unless your display is a monochrome display), we do not need to do anything. Of course, you can also set the video card to VGA or even svga mode, as long as your BIOS and video card support.Second, implement a shell with simple interaction functions. The code is incomplete. Complete the code by yourself or refer to the attachment./** Read a character from the keyboard. If there is no input, wait. The low byte of the returned value is asii, and the h
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.