Сейчас на форуме: bartolomeo, -Sanchez- (+4 невидимых) |
eXeL@B —› Вопросы новичков —› Нету строки в диссасеблированной программе, к-я быть должна |
Посл.ответ | Сообщение |
|
Создано: 16 апреля 2006 20:53 · Личное сообщение · #1 Привет. Я пытаюсь взламывать крякмисы от фантома. В первом крякмисе задание: найти серийник к проге. Там я просто ищу строки в дизассемблированном коде, которые выводятся функцией MessageBoxA и дальше скачу от них. Ну попробовал я этот крякмис и решил написать свою программу с какой-нить строчкой, дизассемблировать её и найти эту строчку. Для этого в коде программы у меня есть вот такая строка: [code] MessageBox(NULL,"find me",NULL,NULL); [/code] (компилятор MS VC++ 6.0, прогу пишу на чистом апи без всяческих библиотек). Это сообщение должно появится после нажатия на кнопку, ну естественно появляется. Дизассемблирую экзешник этой проги (W32Dasm). И ищу строку «find me». А он её не находит. Также смотрю в Refs->String Data References. А там вообще одни каракули. Почему так? Может я как-то по косячному программу компилю или башня у меня косяковая? |
|
Создано: 16 апреля 2006 22:30 · Личное сообщение · #2 |
|
Создано: 16 апреля 2006 23:06 · Личное сообщение · #3 вот, там где выводится сообщения выделил, надеюсь заметно. #include <windows.h> #include "resource.h" LONG WINAPI WndProc(HWND,UINT,WPARAM,LPARAM); BOOL CALLBACK DlgProc (HWND,UINT,WPARAM,LPARAM); HWND b1hwnd,b2hwnd; HINSTANCE hInst; HWND hwnd; int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd) { MSG msg; WNDCLASS w; hInst=hInstance; memset(&w,0,sizeof(WNDCLASS)); w.style=CS_HREDRAW | CS_VREDRAW; w.lpfnWndProc=WndProc; w.hInstance=hInstance; w.hbrBackground=(HBRUSH)COLOR_WINDOW; w.lpszClassName="First"; w.hIcon=LoadIcon(NULL,IDI_HAND); w.hCursor=LoadCursor(NULL, IDC_ARROW); RegisterClass(&w); hwnd=CreateWindow("First","fucking window",WS_OVERLAPPEDWINDOW,100,100,500,400,NULL,NULL,hInstance,NULL); b1hwnd=CreateWindow("BUTTON","OK",WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,10,10,100,100,hwnd,NULL,NULL,NULL); b2hwnd=CreateWindow("BUTTON","Cool",WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,110,110,100,100,hwnd,NULL,NULL,NULL); ShowWindow(hwnd,SW_NORMAL); UpdateWindow(hwnd); while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } LONG WINAPI WndProc(HWND hwnd,UINT Message,WPARAM wparam,LPARAM lparam) { switch(Message) { case WM_PAINT: HDC hdc; PAINTSTRUCT ps; RECT rect; char buf[255]; GetLogicalDriveStrings(255,buf); hdc=BeginPaint(hwnd,&ps); GetClientRect(hwnd,&rect); DrawText(hdc,buf,-1,&rect,DT_SINGLELINE | DT_CENTER); EndPaint(hwnd,&ps); break; case WM_DESTROY: PostQuitMessage(0); break; case WM_LBUTTONDOWN: SetWindowText(hwnd,"not fucking WINDOW"); break; case WM_RBUTTONDOWN: if(!DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG1),hwnd,DlgProc)); break; case WM_COMMAND: if((HWND) lparam==b1hwnd) { ////////////////////////////////////////////////////// ////////////////////////////////////////////////////// SetWindowText(hwnd,"tra-ta-ta"); ///// - finding message MessageBox(NULL,"find me",NULL,NULL); ///// - finding message ////////////////////////////////////////////////////// ////////////////////////////////////////////////////// ////////////////////////////////////////////////////// } if((HWND) lparam==b2hwnd)SetWindowText(hwnd,"Cool was clicked"); default: return DefWindowProc(hwnd,Message,wparam,lparam); } return 0; } BOOL CALLBACK DlgProc (HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam) { char translated_word[80]; switch (message) { case WM_INITDIALOG : return TRUE ; case WM_COMMAND : switch (LOWORD (wParam)) { case IDOK : GetDlgItemText(hDlg,int(IDC_EDIT1),translated_word,80); EndDialog(hDlg,0); SetWindowText(hwnd,translated_word); return TRUE; case IDCANCEL : EndDialog (hDlg, 0) ; return TRUE; //return TRUE ; } break ; } return FALSE ; } |
|
Создано: 16 апреля 2006 23:46 · Поправил: Klajnor · Личное сообщение · #4 Т.к. твой код не компилируется, то пришлось его поправить до такого состояния: #include <windows.h> LONG WINAPI WndProc(HWND,UINT,WPARAM,LPARAM); BOOL CALLBACK DlgProc (HWND,UINT,WPARAM,LPARAM); HWND b1hwnd,b2hwnd; HINSTANCE hInst; HWND hwnd; int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd) { MSG msg; WNDCLASS w; hInst=hInstance; memset(&w,0,sizeof(WNDCLASS)); w.style=CS_HREDRAW | CS_VREDRAW; w.lpfnWndProc=WndProc; w.hInstance=hInstance; w.hbrBackground=(HBRUSH)COLOR_WINDOW; w.lpszClassName="First"; w.hIcon=LoadIcon(NULL,IDI_HAND); w.hCursor=LoadCursor(NULL, IDC_ARROW); RegisterClass(&w); hwnd=CreateWindow("First","fucking window",WS_OVERLAPPEDWINDOW,100,100,500,400,NULL,NULL,hInstance,NULL); b1hwnd=CreateWindow("BUTTON","OK",WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,10,10,100,100,hwnd,NULL,NULL,NULL); b2hwnd=CreateWindow("BUTTON","Cool",WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,110,110,100,100,hwnd,NULL,NULL,NULL); ShowWindow(hwnd,SW_NORMAL); UpdateWindow(hwnd); while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } LONG WINAPI WndProc(HWND hwnd,UINT Message,WPARAM wparam,LPARAM lparam) { switch(Message) { case WM_PAINT: HDC hdc; PAINTSTRUCT ps; RECT rect; char buf[255]; GetLogicalDriveStrings(255,buf); hdc=BeginPaint(hwnd,&ps); GetClientRect(hwnd,&rect); DrawText(hdc,buf,-1,&rect,DT_SINGLELINE | DT_CENTER); EndPaint(hwnd,&ps); break; case WM_DESTROY: PostQuitMessage(0); break; case WM_LBUTTONDOWN: SetWindowText(hwnd,"not fucking WINDOW"); break; case WM_COMMAND: if((HWND) lparam==b1hwnd) { ////////////////////////////////////////////////////// ////////////////////////////////////////////////////// SetWindowText(hwnd,"tra-ta-ta"); ///// - finding message MessageBox(NULL,"find me","Any caption",NULL); ///// - finding message ////////////////////////////////////////////////////// ////////////////////////////////////////////////////// ////////////////////////////////////////////////////// } if((HWND) lparam==b2hwnd)SetWindowText(hwnd,"Cool was clicked"); default: return DefWindowProc(hwnd,Message,wparam,lparam); } return 0; } W32Dasm определил все строки, но в такой проге: #include <windows.h> int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MessageBox(0,"Text","Caption",0); return 0; } W32Dasm нашёл только "Text". Вообщем W32Dasm - лажа. Используй IDA |
|
Создано: 17 апреля 2006 00:33 · Личное сообщение · #5 |
|
Создано: 17 апреля 2006 11:31 · Личное сообщение · #6 |
|
Создано: 17 апреля 2006 13:33 · Личное сообщение · #7 |
|
Создано: 17 апреля 2006 14:02 · Личное сообщение · #8 |
|
Создано: 17 апреля 2006 15:49 · Личное сообщение · #9 |
|
Создано: 17 апреля 2006 16:50 · Личное сообщение · #10 |
|
Создано: 17 апреля 2006 23:45 · Личное сообщение · #11 Да уж пользуйся IDA, полдьзуйся IDA. я бы с удовольствием. Нашел на хакере какую-то демо версию и то к-я не работает. )) Завтра пойду на работу качать софт. И Hiew нашел на хакере демо версию - работает, но файлы больше 150 кб читать не может, а моя программа больше 150. Короче одни обломы. 2 Rid3r - бинарник выложил. ae04_17.04.2006_CRACKLAB.rU.tgz - x_trans.exe |
|
Создано: 18 апреля 2006 00:31 · Поправил: Klajnor · Личное сообщение · #12 |
|
Создано: 18 апреля 2006 00:46 · Личное сообщение · #13 |
eXeL@B —› Вопросы новичков —› Нету строки в диссасеблированной программе, к-я быть должна |