본문 바로가기

COMPUTER435

10/8 6-19 Block=4kb로 쪼개져있다 파일이 8kb이면 2개의 Block 파일이 6kb이면 2개의 Block but 2kb가 남는다. block의 크기가 작으면 낭비되는 공간을 최소화할 수 있다. block의 크기가 크면 블록접근을 적게 해도 된다. 블록접근도 모두 프로세스의 연산이기 때문에 연산이 줄수록 좋다. 4kb가 제일 적당한 것 같아서 block은 4kb! 블록은 파일시스템의 최소단위 블록그룹 홀수번끼리 성질이 같고 짝수번끼리 성질이 같다. 0번은 홀수번보다 성질이 하나 더 있다.(0번과 홀수번은 비슷) 0번의 Journal Log Area Super Block, GDT, Inode Table이 중요! Ext2/3 비슷 파일시스템 1. 파일 찾아가기 2. 삭제된 데이터 복구 슈퍼블록시그니처로 .. 2018. 10. 8.
10/4 structure alignment #pragma pack(push,1) #pragma pack(pop) L2스위치는 꼽는데가 많다. L2스위치->CAM(Content Addressable Memory) Table, 이더넷 헤더만 본다. L2스위치는 mac주소를 보고 라우터는 ip(L3)를 본다라우터는 L3스위치 ARP table! non promiscuous mode: 선별적인, 자신과 관련된 패킷만arp-table 만들때 arp 패킷의 sender mac sender ip보고 판단 CAM table감염 CAM table은 건드리지 말고 arp table을 건들자! recovery request broadcast 발생하면 알아채서 또 다시 감염시키자 sender->target broadcasttarge.. 2018. 10. 4.
Managed platforms support2 #include "pin.H" #include #include // ===================================================================== // Global variables // ===================================================================== std::ostream * out = &cerr; // ===================================================================== // Command line switches // ====================================================================.. 2018. 10. 2.
Managed platforms support1 #include "pin.H" #include #include // ================================================================== // Global variables // ================================================================== UINT64 insNativeDiscoveredCount = 0; //number of discovered native instructions UINT64 insDynamicDiscoveredCount = 0; //number of discovered dynamic instructions UINT64 insNoRtnDiscoveredCount = 0; //num.. 2018. 10. 2.
Instrumenting Before and After Forks #include #include #include #include #include "pin.H" #include #include using namespace std; INT32 Usage() { cerr 2018. 10. 2.
Instrumenting Child Processes #include "pin.H" #include #include #include /* ===================================================================== */ /* Command line Switches */ /* ===================================================================== */ BOOL FollowChild(CHILD_PROCESS childProcess, VOID * userData) { fprintf(stdout, "before child:%u\n", getpid()); return TRUE; } /* ============================================.. 2018. 10. 2.
Replacing a Routine in Probe Mode // Replace an original function with a custom function defined in the tool using // probes. The replacement function has a different signature from that of the // original replaced function. #include "pin.H" #include using namespace std; typedef VOID * ( *FP_MALLOC )( size_t ); // This is the replacement routine. // VOID * NewMalloc( FP_MALLOC orgFuncptr, UINT32 arg0, ADDRINT returnIp ) { // Nor.. 2018. 10. 2.
Detaching Pin from the Application #include #include "pin.H" #include // This tool shows how to detach Pin from an // application that is under Pin's control. UINT64 icount = 0; #define N 10000 VOID docount() { icount++; // Release control of application if 10000 // instructions have been executed if ((icount % N) == 0) { PIN_Detach(); } } VOID Instruction(INS ins, VOID *v) { INS_InsertCall(ins, IPOINT_BEFORE, (AFUNPTR)docount, I.. 2018. 10. 2.
Finding the Static Properties of an Image // // This tool prints a trace of image load and unload events // #include #include #include "pin.H" // Pin calls this function every time a new img is loaded // It can instrument the image, but this example merely // counts the number of static instructions in the image VOID ImageLoad(IMG img, VOID *v) { UINT32 count = 0; for (SEC sec = IMG_SecHead(img); SEC_Valid(sec); sec = SEC_Next(sec)) { f.. 2018. 10. 2.