MINERVA/C_CPP 2021. 11. 19. 21:44
반응형

아래의 값은 컴파일러에 의해서 세팅되는 메모리 값입니다.

(*가급적 모든 변수/메모리는 반드시 초기화하는 습관을 가지는것이 제일 듯합니다.)

 

- 64 bits
[초기화 되지 않은 지역변수]
0xCCCCCCCCCCCCCCCC
[초기화 되지 않은 Heap 메모리]
0xCDCDCDCDCDCDCDCD
[Free된 Heap 메모리]
0xDDDDDDDDDDDDDDDD or  0xFEEEFEEEFEEEFEEE
[할당된 Heap 메모리를 벗어난 공간]
0xFDFDFDFDFDFDFDFD

- 32 bits
[초기화 되지 않은 지역변수]
0xCCCCCCCC
[초기화 되지 않은 Heap 메모리]
0xCDCDCDCD
[Free된 Heap 메모리]
0xDDDDDDDD or  0xFEEEFEEE
[할당된 Heap 메모리를 벗어난 공간]
0xFDFDFDFD

 

추가 도움 내용:

 

4. 메모리 값을 보고 현재 메모리 상태를 알아보자.

WFC Technical Note 006 - Funny Memory Values Introduction Microsoft has put quite a lot of memory leak detection helpers in Windows NT. They have not done a good job of advertising it. This document..

choiwonwoo.tistory.com

 

반응형
posted by choiwonwoo
:
MINERVA/C_CPP 2021. 11. 19. 11:45
반응형

오픈소스 라이브러를 사용하다가, 아래의 에러를 접하는 경우가 있습니다.

 

[에러메시지]

LINK : fatal error C1905: 프런트 엔드와 백 엔드가 호환되지 않습니다. 같은 프로세서를 대상으로 해야 합니다.
LINK : fatal error LNK1257: 코드를 생성하지 못했습니다.
LINK : fatal error LNK1327: link.exe을(를) 실행하는 동안 오류가 발생했습니다.

에러화면

이런 경우는 빌드환경과 빌드 아키텍쳐가 호환되지 않을때 발생합니다.

예: 64 bits 빌드를 진행하고 있는데, 32 bits 라이브러리를 사용하는 경우

 

이런 경우는 해당 라이브리의 버젼을 확인해봐야 합니다.

--> Visual studio에 포함된 dumpbin 사용하면 됩니다.

https://blogs.technet.microsoft.com/windowshpc/2009/03/26/how-to-tell-if-a-exe-file-is-a-32-bit-or-64-bit-application-using-dumpbin/

[사용예]

 

 

 

 

반응형
posted by choiwonwoo
:
MINERVA/TechInfo 2021. 11. 18. 05:50
반응형

오픈소스 빌드 중에 해당 파일에 대해, 백신(V3)에서 트로이안 목마 바이러스라고 메시지를 띄워 찾아 보았습니다.

 

결론부터 말하면 아닙니다. 

arch.exe 는 architecture의 약자로, 윈도우 환경에서 리눅스 환경환경을 구축하는 역활을 하고 있습니다.

 

자세한 내용은 아래를 확인해보시면 됩니다.

http://windowsbulletin.com/files/exe/intel-corporation/intel-xdk/arch-exe

 

What is arch.exe? Is it Safe or a Virus? How to remove or fix it

arch.exe is a program developed by Intel Corporation.

windowsbulletin.com

 

위사이트에서 이기능은 다운받아 한번씩 PC를 점검하기 좋을듯합니다.

 

반응형
posted by choiwonwoo
:
MINERVA/C_CPP 2021. 11. 4. 13:25
반응형

새로운 개발 PC를 장만해서, 개발환경을 설치후, 소스를 다운받아 빌드가 않되어 잠시(?) 삽질을하게 되어 기록차원에서 정리를 하고자 합니다.

 

아래 예제와 같이 vcpkg를 통해 필요한 라이브러리를 설치하고자 할때 아래와 같은 에러가 발생하는 경우가 있습니다.

에러 발생 화면

[해결]

1) visual studio installer를 기동

2) 수정 선택

3) 언어 추가 설치

4) Visual studio 환경 설정

5) 다시빌드

다시 빌드를 하면 아래와 같이 visual studio 2019는 더이상 노란메시지가 나오지 않음을 확인할수 있다.

(참고로, 현재 아래의 노란색 경고의 메시지는 제 PC에 설치된 visual studio 2013의 경우에는 영어 언어 팩이 설치되어 있지 않아 발생하고 있다. 이것 역시 위와 똑같이 설정을 해주면 됨.)

 

6) Visual studio 연결/해제

- vcpkg integrate install 명령으로 Visual Studio 연결 설정

- vcpkg integrate remove 명령으로 Visual Studio 연결 해제

 

반응형
posted by choiwonwoo
:
MINERVA/Python 2021. 9. 7. 14:11
반응형

C/C++ 에서 사용하던 dumpcode(https://choiwonwoo.tistory.com/entry/%EB%94%94%EB%B2%84%EA%B9%85-3264-bits-dumpcodeh?category=267468) 함수를 Python에서 사용가능하게 바꾸어 보았습니다.

 

nMaxLineLen만 조절하셔서 사용하시면 됩니다.

[사용결과]

반응형
posted by choiwonwoo
:
MINERVA/Python 2021. 9. 7. 11:10
반응형

##################################
# id(x): 객체(x) 주소(address) 확인
##################################
name = 'Python'
print(f'My name is {name} and object id is {id(name)}')

# passed by Assignment!!!(추후 정리)
obj_copy = name # passed by Assignment(o) call by reference(x) call by value(x)
print(f'My name is {obj_copy} and obj_copy id is {id(obj_copy)}')

#################################################
# type(x): 객체(x) 타입(type) 확인
# immutable objects: int, float, string, tuple
# mutable objects: list, dict, set
#################################################
age = 18
colors = ('red','blue','yellow')
print(f'type is {type(name)}')
print(f'type is {type(age)}')
print(f'type is {type(colors)}')

########################################################
# len(x): x 길이(문자열) 또는 원소의 갯수(tuple,list, dic...
########################################################
print(len(name),len(colors))

##################################
# eval(x): (x) 결과를 반환
##################################
a = eval ('"hello" + "python"')
b = eval ('100+40')
c = eval ('len(colors)')
print(f'results are {a}, {b},{c}')

반응형
posted by choiwonwoo
:
MINERVA/C_CPP 2021. 9. 6. 16:34
반응형

초기 보안과 해킹을 공부할때 (예: BOF/FSB 등) 자주 사용사용하던, 32비트 dumpcode.h(initial written by ohhara)를 32비트와 64비트에서 동시 사용가능하게 업그레이드한 코드 입니다.

 

[dumpcode.h]

 

#define     MAX_LINE_LEN   (16)     //-- 출력하고자 하는 라인의 길이를 나타냅니다.

 

void printchar(unsigned char c)
{
    if (isprint(c))
        printf("%c", c);
    else
        printf(".");
}
void dumpcode(unsigned char* buff, int len)
{
    int i;
    
    for (i = 0; i < len; i++)
    {
        //-- address
        if (i % MAX_LINE_LEN == 0)
        {
            printf("0x%p  ", &buff[i]);
        }

        //-- one by one 
        printf("%02x ", buff[i]);

        //-- fulls
        if (((i % MAX_LINE_LEN) - (MAX_LINE_LEN-1)) == 0) {

            printf(" ");

            for (int j = i - (MAX_LINE_LEN-1); j <=i ; j++)
                printchar(buff[j]);

            printf("\n");
        }        

    }
    
    //-- remainer
    if (i % MAX_LINE_LEN != 0)
    {
        int j;
        //int spaces = (len - i + MAX_LINE_LEN - i % MAX_LINE_LEN) * 3 + 2;
        int spaces = (len - i + MAX_LINE_LEN - i % MAX_LINE_LEN) * 3 + 1;

        for (j = 0; j < spaces; j++)
            printf(" ");
        for (j = i - i % MAX_LINE_LEN; j < len; j++)
            printchar(buff[j]);
    }

    printf("\n");
}

 

[사용방법 및 결과]

32 bits 예제
64  bits 예제

반응형
posted by choiwonwoo
:
MINERVA/Python 2021. 9. 5. 05:19
반응형

최근 프로젝트를 완료하면서, 개인적으로 다시 한번 파이썬(Python)에 대한 정리 필요성을 느끼게 되어 해당내용을 하나씩 기록하고자 합니다.

 

프로그래밍 언어를 공부시 개인적으로 제일 먼저 친해져야 하는 명령어가 출력문이다. 그 이유는 당연히 백문이 불여일견이 듯이, 백문이 불여일타의 첫시작이 출력문이기 때문이다.

 

# 문자열(string) 출력
print('Maing M&F')

# 문자열 포매팅(string formatting): 문자열의 원하는 위치에 변수값을 출력하는 것을 의미함
# 1) % 사용(서식문자): 정수(%d), 문자열(%s), 실수(%f), 문자(%%)...
str_sample1 = 'Hello %s' % 'Python'
print(str_sample1)

str_sample2 = 'My age: %d' % 18
print(str_sample2)

number = 1004
str_sample2 = 'My happy nummber : %d' % number

gifts=['bag','money','travel']
for gitf in gifts:
print('My gift is %s' % gitf)

# 인자가 두개 이상인경우: ()를 사용
str_sample3 = 'my name is %s and age is %d' % ('M&F',18)
print(str_sample3)

## 단점: formatter에 대응되는 데이터 타입을 정확히 알아야 하고,
## 코드가 길어지면 가독성이 떨어짐

# 2) str.format 사용(Python 3이상 부터 지원)
str_sample4 = 'Python version {}'.format(3)
print(str_sample4)

str_sample5 = 'My name: {}'.format('wonwoo')
print(str_sample5)

# multiple arguments
str_sample6 = 'My name is {0} and my age is {1}'.format('wonwoo',18)
print(str_sample6)

## 단점: 긴 문자열 처리 및 여러인자 일때 너무 문자열 길이가 길어지는 느낌!

# 3) f-string(Python 3.6이상 부터 지원)
name = 'wonwoo'
str_sample7 = f'My name is {name}'
print(str_sample7)

age = 18
str_sample8 = f'My name is {name} and age is {age}'
print(str_sample8)
## 정리: f-string이 가장 직관적이다. 사용하기 쉽다. 또한 속도 면에서도 가장빠르다.

 

반응형
posted by choiwonwoo
:
MINERVA/C_CPP 2021. 9. 1. 14:30
반응형

C/C++개발 경험 관점에서, Python으로 작업을 하게 되면 제일 좋게 느껴지는 점은 자료구조(set, list, tuple 등)의 직관성입니다. (물론, C++ 에서도 지원을 하고 있지만, 상대적으로 익숙해지는 시간이 조금 더 걸리기는 한거 같다.)

그래서, 근래 프로젝트를 진행하면서 사용하게 되어 사용 용례  및 느낀점을 정리하였습니다.

 

[사용용례]

Wallet.h
Wallet.cpp

[느낀점]

OOP적인 느낌(?)과 코드의 확장성을 위해서는 tuple이 편해보인다.

하지만, 로직처리가 많은 경우, 특히 에러코드등의 처리를 위해서는 이전방식(레퍼/포인터)이 더 낳아 보이기도 함.

이부분은 같이 일하는 구성원들과의 합의(?)를 통해 코드 일관성을 유지하는게 좋아 보입니다.

반응형
posted by choiwonwoo
:
MINERVA/C_CPP 2021. 8. 30. 16:38
반응형

최근에 Javascript, Pyhon 등 다양한 언어 및 32/64bits 환경에서 동시에 작업을 진행하니, 때때로 정리가 않되는 느낌이 있어 정리를 하기위해 기록을 합니다.

 

기본적으로 32 bits와 64 bits에서의 데이타 사이즈는 아래와 같습니다.

(출처: https://www.ibm.com/docs/en/zos/2.2.0?topic=environments-ilp32-lp64-data-models-data-type-sizes)

 

하지만, Windows 64bits 환경에서는 차이가 long형의 경우 차이가 있습니다.

(참조: https://docs.microsoft.com/ko-kr/cpp/cpp/fundamental-types-cpp?view=msvc-160) 

 

 

반응형
posted by choiwonwoo
: