본문 바로가기
C 언어

공유(shared) 라이브러리 만들기

by SpeeDr00t 2016. 7. 19.
반응형

공유(shared) 라이브러리 만들기


http://www.darknet.org.uk/2016/07/dmitry-deepmagic-information-gathering-tool/


부제 :  dmitry 소스 쪼개서 사용하기


file.h

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


#define OUTPUT_LOCALITY "output.txt"
FILE *wfp;
fpos_t file_loc;
char filename[64];
char outputfile[64];

int file_prep();
int file_open();
int file_close();



file.c
#include "file.h"

int file_prep()
{
        outputfile[strlen(outputfile)] = '\0';
        if (!(wfp = fopen(outputfile, "w" ) )) {
                printf("Error: Unable to write to %s\n", outputfile);
                exit(1);
        }
        printf("Writing output to '%s'\n\n", outputfile);
        fclose(wfp);
        return 0;
}

int file_open()
{
        if (!( wfp = fopen(outputfile, "a+" ) )) {
                printf("Error: Unable to write to %s\n", outputfile);
                exit(1);
        }
        return 0;
}

int file_close()
{
        if (fclose(wfp)) {
                printf("Error: Unable to close file stream writing to %s\n", outputfile);
                exit(1);
        }
        return 0;
}

컴파일하기
hacker@ubuntu$ gcc -shared -Wl,-soname,libfile.so.1 -o libfile.so.1.0.1 file.o
hacker@ubuntu$ ls
file.c  file.h  file.o  lib2_test.c  libfile.so.1.0.1
hacker@ubuntu$ sudo cp libfile.so.1.0.1 /usr/local/lib
hacker@ubuntu$ ls /usr/local/lib/libfile.so.1.0.1 
/usr/local/lib/libfile.so.1.0.1
hacker@ubuntu$ sudo ln -s /usr/local/lib/libfile.so.1.0.1 /usr/local/lib/libfile.so
hacker@ubuntu$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
hacker@ubuntu$ sudo ldconfig


lib2_test.c 테스트 소스
#include "file.h"
#include <stdio.h>
#include <string.h>

int main( int argc , char ** argv )
{

    char filebuff[255];
    memset(filebuff,0x00 , sizeof(filebuff));
    memset(outputfile,0x00 , sizeof(outputfile));

    char * rfile = "test.txt";
    char * rbuff = "insert data\n";

    strcpy( outputfile, rfile );

    if( strlen( outputfile ) )
    {
        file_open();

        strcpy( filebuff, rbuff );
        fputs(filebuff, wfp);
    }



    return 0;
}


lib2_test.c 컴파일 및 실행
hacker@ubuntu$ gcc -o lib2_test lib2_test.c -L/usr/local/lib -lfile
hacker@ubuntu$ ./lib2_test 
hacker@ubuntu$ cat test.txt 
insert data


반응형

'C 언어' 카테고리의 다른 글

매크로 사용하기(php소스 쪼개서 사용하기)  (0) 2016.07.21
strdup  (0) 2016.07.20
정적 라이브러리 만들기  (0) 2016.07.19
copy file  (0) 2016.07.12
binary search  (0) 2016.07.12