반응형

출처 : http://www.codeproject.com/Articles/2510/Data-Conversions

Decimal Conversions

Decimal To Hex

 // Use _itoa( ) function and set radix to 16.

char hexstring[10];

int number = 30;

itoa( number, hexstring, 16); // In hexstring is 1e.

 

Hex To Decimal 

 // You can use strtol function and you can specify base.

char * hexstring= "ABCDEF";
char * p;
int number = strtol(hexstring, &p,16);

//  A function that does this

bool HexToDecimal (char* HexNumber, int& Number)
{
    char* pStopString;
    Number = strtol (HexNumber, &pStopString, 16);
    return (bool)(Number != LONG_MAX);
}

Decimal to time

 char *DecToTime(float fTime, char *szTime)
{
    int nHrs, nMin, nSec;
    fTime *= 3600;
    nHrs = (int)fTime / 3600;
    nMin = (int)(fTime - nHrs * 3600) / 60;
    nSec = (int)(fTime - nHrs * 3600 - nMin * 60);
    wsprintf(szTime, "%02d.%02d.%02d Hrs.Min.Sec.", nHrs, nMin, nSec);
    return szTime;
}

String Conversions

String to Hex

sscanf(string, %04X, &your_word16);
// where string = your string and
// 04 = length of your string and X = hex 

Hex to CString

CString Str;
unsigned char Write_Buff[1];
Write_Buff[0] = 0x01;
Str.Format("0x0%x",Write_Buff[0]);

 

COleVariant to CString

CString strTemp;
COleVariant Var;
Var = "FirstName";
strTemp = Var.bstrVal;
AfxMessageBox(strTemp); 

 

CString to char pointer

CString MyString = "ABCDEF";
char * szMyString = (char *) (LPCTSTR) MyString;

 

char *pBuffer = new char[1024];
CString strBuf = "Test";
pBuffer = strBuf.GetBuffer(sizeof(pBuffer)); 

 

char pointer to CString

char * mystring = "12345";


CString string = mystring; 

 

Double to CString including the fractional part

CString strValue,strInt, strDecimal;
int decimal,sign;
double dValue = 4.125;
strValue = _fcvt(dValue,6,&decimal,&sign);
    // Now decimal contains 1 because there is
    // only one digit before the .

strInt = strValue.Left(decimal); // strInt contains 4
strDecimal = strValue.Mid(decimal); // strDecimal contains 125

CString strFinalVal;
strFinalVal.Format("%s.%s",strInt,strDecimal);
    // strFinalVal contains 4.125 

 

Double To CString

CString strValue;
int decimal,sign;

 

double dValue = 123456789101112;
strValue = _ecvt(dValue,15,&decimal,&sign); 

 

CString To Double

strValue = "121110987654321";
dValue = atof(strValue); 

 

CString to LPCSTR

CString str1 = _T("My String");
int nLen = str1.GetLength();
LPCSTR lpszBuf = str1.GetBuffer(nLen);
// here do something with lpszBuf...........
str1.ReleaseBuffer(); 

 

CString to LPSTR

CString str = _T("My String");
int nLen = str.GetLength();
LPTSTR lpszBuf = str.GetBuffer(nLen);
// here do something with lpszBuf...........
str.ReleaseBuffer(); 

 

CString to WCHAR*

 

CString str = "A string here" ;
LPWSTR lpszW = new WCHAR[255];

LPTSTR lpStr = str.GetBuffer( str.GetLength() );
int nLen = MultiByteToWideChar(CP_ACP, 0,lpStr, -1, NULL, NULL);
MultiByteToWideChar(CP_ACP, 0, lpStr, -1, lpszW, nLen);
AFunctionUsesWCHAR( lpszW );
delete[] lpszW;

 

LPTSTR to LPWSTR

int nLen = MultiByteToWideChar(CP_ACP, 0, lptStr, -1, NULL, NULL);
MultiByteToWideChar(CP_ACP, 0, lptStr, -1, lpwStr, nLen);

 

string to BSTR

string ss = "Girish";
BSTR _bstr_home = A2BSTR(ss.c_str()); 

 

CString to BSTR

 CString str = "whatever" ;
BSTR resultsString = str.AllocSysString();

 

_bstr_t to CString

#include <ANSIAPI.H>
#include <comdef.h>
_bstr_t bsText("Hai Bayram");
CString strName;
W2A(bsText, strName.GetBuffer(256), 256);
strName.ReleaseBuffer();
AfxMessageBox(strName);

 

char szFileName[256];
GetModuleFileName(NULL,szFileName,256);
AfxMessageBox(szFileName);

 

Character arrays

Char array to integer

 char MyArray[20];
int nValue;

 

nValue = atoi(MyArray);

 

Char array to float

char MyArray[20];
float fValue;

 

fValue = atof(MyArray); 

 

Char Pointer to double

char *str = " -343.23 ";
double dVal;
dVal = atof( str );

 

Char Pointer to integer

 char *str = " -343.23 ";
int iVal;
iVal = atoi( str );

 

Char Pointer to long

char *str = "99999";
long lVal;


lVal = atol( str ); 

 

Char* to BSTR

 char * p = "whatever";
_bstr_t bstr = p;

 

Float to WORD and Vice Versa

 float fVar;
WORD wVar;
fVar = 247.346;
wVar = (WORD)fVar; //Converting from float to WORD.
    //The value in wVar would be 247

 

wVar = 247;
fVar = (float)fVar; //Converting from WORD to float.
    //The value in fVar would be 247.00

 

반응형

'프로그래밍 > API/MFC Source' 카테고리의 다른 글

주소를 배열로 연결하는 방법  (0) 2014.02.07
[MFC] ListControl 컬럼 추가  (0) 2012.06.07
[MFC] 폴더 선택 함수  (0) 2012.06.04
반응형

이 바닥에 입문한지 12년...
일한지는 6년차가 되었습니다.

처음에는 웹, 시스템 보안 및 해킹으로 시작해서
이젠 바이너리 쪽으로 파고 있는 한 사람입니다.
이래저래 요렇게 조렇게 공부하다보니 지금 분야인 Reverse 및 보안 모듈을
개발 테스트를 진행 하고 있네요.

참, 많은 일이 있었고 앞으로도 많은 일이 있을꺼라 생각이 듭니다.
여기까지는 그냥 심정....아래부터는 보안 모듈 개발자라면 알아야 하는 것들에 대해서
기술 하려고 합니다.


1. 타협 하라.
보안 업종은 다른 직종보다도 더 타 부서간의 협업이 되어야 하는 분야입니다.
혼자 독고다이로 한다고 해서 그 사람은 그 직장에서 열심히 살아갈 수 없습니다.
특히나, 보안 업무는 "너 잘못했어 앞으로 그러지마" 라는 지적 아닌 지적을 하는 부서이기
때문에 "아"라고 말을 어떻게 이쁘게 전달할지를 생각을 해야 한다고 생각합니다.
내가 "아"라고 외쳤을때 상대방도 "아"라고 받아드리기 하기 위해서는 강하게 나가면
그 "아"라는 소리가 "아"라고 받아드려지지 않던가, 아니면 적용하는데 기일이 오래 걸립니다.
또는, 적용하더라도 적용했다는 통보없이 조용조용히 묻히게 됩니다.

그래서 보안 업무하는 사람들은 플레이라고 하는 사회 영업(?)을 해야하는 일이 생기게 됩니다.
솔직히 보안 업무 뿐아니라 모든 사람은 사회적 영업은 필요하다고 생각이 듭니다.
아무리 좋은 실력이 있더라도 조화를 이루지 않을 경우는 착출 되고 도태 됩니다.

자, 그럼 첫번째, 타협하라는 내용의 핵심된 내용은 이렇습니다.
"평상시에 친분을 쌓고 기술적인 부분이 아닌 인간적이면서, 업무를 할 때는 칼 같이 하라"라는 겁니다.
적성에 맞는 사람도 있고 적성에 맞지 못해 그렇게 하지 못하는 사람이 있다고 하면, 잘하는 사람에게 도움을
얻는 것도 나쁘지 않습니다.

보안업무는 서비스라고 생각하면 더 업무하는데 부드럽지 않을까 생각이 듭니다.


2. 적용 되지 않더라도 나의 길은 멈추면 안된다.
무언가를 만들었을때, 보안 모듈을 적용하는데 있어서 100% 적용이라는건 없습니다.
100개를 만들면 10-20개만 적용되더다로 엄청나게 성공한 것입니다.
대부분의 보안 모듈은 실행하는데 어느 정도의 퍼포먼스를 잡아 먹고 그러다보니 큰 프로그램에서
문제가 되는 경우가 간혹 생깁니다.
(물론 그 부분은 해결해야하는 숙제입니다.)

그렇다보니, 당장 적용하지 못하고 차후로 연기되고 지연되다보면 어느 덧 적용 시점을 놓치게 됩니다.
그렇다고 "x장 내가 그러게 적용하라고 했잖아" 라고 화를 내거나 "이늠의 회사는 말을 들어쳐 먹질 알아"라고 생각할
필요 없습니다.

보안 사고는 보안팀이 필요하다고 보여주는 사례이며, 사고를 적절하게 차단하고 막을 경우 더 위상이 높아지므로
언젠가는 빛을 보게 되었습니다. 그러니 근 시일적인 생각으로 흥분하거나 초조해 하지 마시길 바랍니다.
방패와 무기는 보안 팀에서 나올 수 밖에 없으니 그 점을 유념하시길 바랍니다.

3. 분석하고 크랙해라.
보안 모듈은 Reverse를 막기 위한 방법입니다. 따라서, 어디에 어떤 기술이 적용되어 있는지 확인 하기 위해서는
많은 분석이 필요합니다. packer도 분석하고, 웜도 분석하고, 남의 제품도 크랙하고 물론 배포하면 안되겠지만
분석하고 추출하는걸 습관화 한다면 추후엔 반드시 쓸 일이 생기게 됩니다.

그러니, 취미생활로 분석과 크랙을 해보는것도 나쁘지 않다고 생각합니다.
단, 절대 공개는 금물.....
방법론이라면 뭐...^^


4. 나만의 프래임 워크
나만의 프레임 워크는 라이브러리가 될 수도 있고 분석 패턴이 될수도 있고
여러가지가 혼합된 부분입니다. 따라서, 나만의 것을 만들고 노하우를 쌓는건 어딜가든
든든한 무기와 방어막을 가지고 뛰어들 수 있는 조건이 되므로
천군만마를 얻을 수 있는 효과가 됩니다.

- 분석을 어떻게 하면 좋을지에 대한 환경적 또는 도구
- 보안 모듈 개발에 따른 라이브러리 구축

이렇게 준비하고 계획 한다면
보다 효과적으로 보안팀 또는 보안 업무를 즐길 수 있지 않을까 생각이 됩니다.
자, 다들 화이팅을 외치고 힘차게 달려나가길 바랍니다. ( _ _)/`

반응형

'Etc > 思現' 카테고리의 다른 글

다시 시작...  (0) 2023.01.13
나의 MBTI는 2014년도 2021년 같다!  (0) 2021.12.27
[crattack] 나의 성향은??? MBTI 테스트 결과  (0) 2014.02.20
된장알...ㅡ.ㅡ+  (3) 2013.04.12
사랑비를 기다리며....  (0) 2012.05.03
반응형

요즘 들어, 제 PC에서 자꾸 Load ollydbg/immunity debug를 이용해서 분석하는데,

Single Step Excetpion으로 분석을 못하는 상황이 발생하더군요.

 

그래서 확인 해보니, Single Step Exception 의 경우 자체적으로 excetpion handle을 생성하여

처리할 경우 발생하는 exception 인데....debugger 측에서 처리하는데 다소 문제(?)가 발생 한 것 같습니다.

(혹시, 자세한 내용을 아신다면 댓글로...^^)

 

그래서 임시 방편으로 분석하는 방법을 적어 봅니다.

먼저, Load 하였는데 아래와 같이 ntdll.ZwRaiseException 에서 멈춘다.

 

 

 

그럼 자체적인 Exception Handle이 있다고 생각하시면 좋을 듯 싶습니다.

그럼 어떻게 처리하느냐....

Option -> Events -> Break on new module (DLL) 을 체크 하시면 EP 지점에서 분석을 시작 할 수 있습니다.

 

 

 

그럼 이만....

반응형
반응형

    UpdateData(TRUE);

    LVITEM lvItem;                      // 리스트 컨트롤에 데이터를 입력시키는 단위 구조체

    lvItem.mask = LVIF_TEXT;       // 필드 속성 (Text, Image,
    lvItem.iItem = nIndex;              // 행 추가 번호
    lvItem.iSubItem = 0;                // 컬럼 번호
    lvItem.pszText = L"Test01";     // 컬럼 내용
    m_ListBox.InsertItem(&lvItem); // 지정한 값 적용

    lvItem.iSubItem = 1;
    lvItem.pszText = L"Test02";
    m_ListBox.SetItem(&lvItem);
   
    lvItem.iSubItem = 2;
    lvItem.pszText = L"Test03";
    m_ListBox.SetItem(&lvItem);

    UpdateData(FALSE);

 

 

 

 

반응형
반응형

    // List Control 컴퍼런스 선택 후 수정해야 함.
    LPWSTR szText[3] = {L"갯수", L"파일명", L"CheckSum 값"};
    int nWid[3] = {50, 100, 305};
   
    UpdateData(TRUE);

    LV_COLUMN lCol;  // 컬럼 설정하기 위한 구조체
    lCol.mask = LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH; // 구조체의 기능을 확장할 플래그 지정
    lCol.fmt = LVCFMT_CENTER;   // 컬럼 정렬 (_CENTER, _LEFT, _RIGHT)

    for (int i = 0; i < 3; i++)
    {
        lCol.pszText = szText[i];           // 컬럼의 제목 지정
        lCol.iSubItem = i;         // 서브아이템의 인덱스 지정
        lCol.cx = nWid[i];         // 컬럼의 넓이 지정

        // LVCOLUMN 구조체로 만들어진 값을 토대로 리스트 컨트롤에 컬럼을 삽입
        m_ListBox.InsertColumn(i, &lCol);  
    }

    UpdateData(FALSE);

 

 

반응형

'프로그래밍 > API/MFC Source' 카테고리의 다른 글

주소를 배열로 연결하는 방법  (0) 2014.02.07
Data Conversions  (0) 2012.07.31
[MFC] 폴더 선택 함수  (0) 2012.06.04
반응형

void FolderSelectFunc()

{

    ITEMIDLIST *pidlBrowse;
    WCHAR       pszPathname[MAX_PATH];
    // MFC에서는 FolderBrowserDialog 를 지원하지 않아, 구조체를 선언하여 직접 호출 해야 한다.
    // 직접 호출 하기 위해서는 BROWSEINFO 구조체를 사용해야 한다.
    BROWSEINFO  BrInfo;
    // 자기 자신의 핸들을 가지고 옴.
    BrInfo.hwndOwner = GetSafeHwnd();
    BrInfo.pidlRoot = NULL; // NULL 이면 "바탕화면" 초기 설정
                            // ITEMIDLIST 구조체에서 지정함.

    memset(&BrInfo, 0, sizeof(BrInfo));
    BrInfo.pszDisplayName = pszPathname;
    BrInfo.lpszTitle = _T("Select Directory");
    BrInfo.ulFlags = BIF_RETURNONLYFSDIRS;

    pidlBrowse = ::SHBrowseForFolder(&BrInfo);

    if(pidlBrowse != NULL)
    {
        SHGetPathFromIDList(pidlBrowse, pszPathname);
    }
    MessageBox(pszPathname, L"선택된 폴더명", MB_OK);
    UpdateData(FALSE);

}

 

 

반응형

'프로그래밍 > API/MFC Source' 카테고리의 다른 글

주소를 배열로 연결하는 방법  (0) 2014.02.07
Data Conversions  (0) 2012.07.31
[MFC] ListControl 컬럼 추가  (0) 2012.06.07
반응형

PE 분석

 

0x01. PE View

 

0x02. PE Explorer

 

 

Hex Differ

 

0x01. HxD

 

0x02. 010 Editor

반응형

'Reverse > PE 관련' 카테고리의 다른 글

Code Sign 분석하기.  (0) 2012.05.31
반응형

0x00. 서론

타사의 Code Sign 된 인증서를 적용하는데 있어서, 문제가 될 수 있다는 이슈가 발생되어 해당 이슈를 분석한 내용을 정리하였다.

 

0x01. 본론

0x01-1. Code Sign 이란?

Code Sign은 실행파일의 신뢰성을 보증하기 위하여, 인증기관에서 인증한 인증서를 기반으로 파일의 무결성을 유지하는 하나의 보증 기능이다. 이 인증서는 공인인증서와 같은 구조로 되어 있어 서명된 파일에 대한 정보를 CA 기관에 요청하여 안전한 업체인지를 판단 하는 기준이 된다.

 

0x01-2. Code Sign 은 어디에?

Code Sign은 PE 구조체의 IMAGE_NT_HEADERS -> IMAGE_OPTIONAL_HEADER의 내용을 참조한다.

Code Sign에 사용되는 변수 및 구조체는 아래와 같다.

   - CheckSum

   - CERTIFICATE Table

 

 

 

 

0x01-3. 타사의 제품 악용하기

 

 

 

서명되지 않은 상태의 프로그램에 타사의 인증서를 적용하는 방법은 Hex Editor를 이용하여, 해당 구조체 내역에 주소와 사이즈를 강제로 넣으면 된다.

 

 

 

 

이와 같이 HexEditor로 만 수정해서 적용이 가능하다.

 

0x01-4. 검사 방법은?

  1. 위에서 보는 것과 같이 자세히 버튼을 통하여 보게 되면 해당 인증서로 정상적으로 인증한 파일인지가 확인이 가능하다.

  2. 다음 함수를 통하여, 확인이 가능하다.

     - WinVerifyTrust(HWND hWnd, GUID *pgActionID, LPVOID pWVTData)

     http://msdn.microsoft.com/en-us/library/windows/desktop/aa388208(v=vs.85).aspx

     단, 해당 함수는 인터넷이 연결된 상태에서 사용해야지 검증이 가능하며 검증 과정은 1분 정도 소요 된다.

 

0x02. 결론

  파일에 대한 인증서를 추출하는건 어렵지 않다. 하지만 해당 파일에 추출된 인증서를 사용하는데 있어서는 제약이 있으므로 어느 정도(?) 안전하다고 볼 수 있다.

  그러나, 인증서가 추출이 가능하다는 것은 공격할 수 있는 포인트가 생성되는 것이므로 해당 이슈에 대한 지속적인 방어적 내용 및 대응책을 모색해 볼 필요가 있다.

 

 

※ 참고 사이트

WinVerifyTrust function

http://msdn.microsoft.com/en-us/library/windows/desktop/aa388208(v=vs.85).aspx

 

CertFindCTLINStore function

http://msdn.microsoft.com/en-us/library/windows/desktop/aa376067(v=vs.85).aspx

Example C Program: Verifying the Signature of a PE File

http://msdn.microsoft.com/en-us/library/windows/desktop/aa382384(v=vs.85).aspx

Verifying a CTL

http://msdn.microsoft.com/en-us/library/windows/desktop/aa388188(v=vs.85).aspx

 

SigCheck v.1.71

http://technet.microsoft.com/en-us/sysinternals/bb897441

 

반응형

'Reverse > PE 관련' 카테고리의 다른 글

PE 분석에 활용하는 툴 소개  (0) 2012.05.31
반응형

 

 

 

한국에서는 2012년에 개봉했지만, 제작된 시기는 2011년인 나루토 극장판...

현재 TV 상영작을 보고 있는 나로선, 볼 수 밖에 없는 이끌림...

하지만, 생각했던 것보단 별루...

 

현제 나루토 481편이 나온 시점에서 내가 늦게 본거 같다.

2월달에 봤으면 재미있었을텐데...

 

여하튼...나루토 TV 상영작을 보는 사람이라면 한번쯤 보면 좋을 법한 내용

 

내 점수는

★★★ 3점이다.

 

여전한 나루토의 좌충우돌 이야기...

TV 판을 보고 있다면 보고 아니면 pass

 

 


나루토 질풍전 극장판 : 블러드 프리즌 (2012)

9.2
감독
무라타 마사히코
출연
타케우치 준코, 테라소마 마사키, 소노자키 미에, 나카무라 유이치, 에가와 히사오
정보
애니메이션, 액션, 어드벤처 | 일본 | 94 분 | 2012-02-23
글쓴이 평점  

반응형
반응형

 

말도 안되는 이야기..

특별히 초능력을 얻었던 10대 청소년들의 위험한 사상...

힘이 모든걸 지배할 수 없는 현실...

그 현실에서 자신을 과시하는 녀석....

 

추천하지 않는다.

카메라 앵글이 1인칭으로 되어 있어서

정신이 없다.

 

또한, 스토리가 마음에 안든다.

그래도 본다면 킬링 타임???

 

내 점수는

★★ 2점이다.

 

초능력을 가진 청소년의 질풍노도의 시기. 끝.

반응형

+ Recent posts