Сейчас на форуме: bartolomeo, -Sanchez- (+4 невидимых)

 eXeL@B —› Вопросы новичков —› Нету строки в диссасеблированной программе, к-я быть должна
Посл.ответ Сообщение

Ранг: 1.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 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. А там вообще одни каракули. Почему так? Может я как-то по косячному программу компилю или башня у меня косяковая?



Ранг: 50.7 (постоянный)
Активность: 0.060
Статус: Участник

Создано: 16 апреля 2006 22:30
· Личное сообщение · #2

Выложи исходник. Сам MSVC++ стоит, а прогу написать не могу, не разу не писал =(



Ранг: 1.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 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 ;
}



Ранг: 50.7 (постоянный)
Активность: 0.060
Статус: Участник

Создано: 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



Ранг: 1.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 17 апреля 2006 00:33
· Личное сообщение · #5

у меня нету IDA, он нашел строки?




Ранг: 122.3 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 17 апреля 2006 11:31
· Личное сообщение · #6

hiew, поиск строки, находим адрес начала (например 00412345) теперь ищем последовательность 452341 затем переключаемся на код и видим push Этого адреса перед вызовом месаджбокса




Ранг: 85.7 (постоянный)
Активность: 0.110
Статус: Участник

Создано: 17 апреля 2006 13:33
· Личное сообщение · #7

Кинь сам екзешник. а то конструктор - "собери сорец сам" не подходит. Сяхи не стоит.

-----
Я фантомас, а ты гавно




Ранг: 50.7 (постоянный)
Активность: 0.060
Статус: Участник

Создано: 17 апреля 2006 14:02
· Личное сообщение · #8

IDA с лёгкостью находит все строки, а вот W32Dasm иногда находит, а иногда нет...

Rid3r свои ехе-шники смогу выложить только коогда домой приду



Ранг: 44.7 (посетитель)
Активность: 0.040
Статус: Участник

Создано: 17 апреля 2006 15:49
· Личное сообщение · #9

Пользуйся IDA




Ранг: 85.7 (постоянный)
Активность: 0.110
Статус: Участник

Создано: 17 апреля 2006 16:50
· Личное сообщение · #10

Keo пишет:
Пользуйся IDA

И еще раз. ПОЛЬЗУЙСЯ IDA!!!

-----
Я фантомас, а ты гавно




Ранг: 1.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 17 апреля 2006 23:45
· Личное сообщение · #11

Да уж пользуйся IDA, полдьзуйся IDA. я бы с удовольствием. Нашел на хакере какую-то демо версию и то к-я не работает. )) Завтра пойду на работу качать софт. И Hiew нашел на хакере демо версию - работает, но файлы больше 150 кб читать не может, а моя программа больше 150. Короче одни обломы.

2 Rid3r - бинарник выложил.

ae04_17.04.2006_CRACKLAB.rU.tgz - x_trans.exe



Ранг: 50.7 (постоянный)
Активность: 0.060
Статус: Участник

Создано: 18 апреля 2006 00:31 · Поправил: Klajnor
· Личное сообщение · #12

Пользуйся тогда Olly (это конечно дебагер, но я думаю тебе надо не только дизасемблить программу ;)
Тоже отлично ищет строки+имеет кучу других возможностей

PS А IDA скачать не можешь?
PSS И почему в заколовок MessageBox'a ничего не пишешь? Раздражает немного "Ошибка"



Ранг: 1.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 апреля 2006 00:46
· Личное сообщение · #13

Вау, клево. Скачал с этого сайта hiew - все нашлось, даже поменял несколько буковок в своей программе. Прикольно.

Olly у меня есть, я просто дубовый ещё не втыкаю че к чему. А IDA скачать могу не не дома, у меня dial-up. На работе скачаю.

В MessageBox-е не знаю почему ничего не пишу.
Всем сэнкс


 eXeL@B —› Вопросы новичков —› Нету строки в диссасеблированной программе, к-я быть должна
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати