Сейчас на форуме: hgdagon, asfa, bartolomeo (+6 невидимых) |
eXeL@B —› Программирование —› Снова про DLL :( |
. 1 . 2 . 3 . >> |
Посл.ответ | Сообщение |
|
Создано: 29 октября 2006 23:11 · Поправил: crash_rider · Личное сообщение · #1 НУ вроде вытащил из Dll fd_usb.dll---> CreateInterface имеет : CreateInterface proc near CODE:008C3940 push ebp CODE:008C3941 mov ebp, esp CODE:008C3943 mov eax, offset unk_8C5668 вот это что такое????? не понять.... CODE:008C3948 mov dword ptr [eax], offset sub_8C3880 CODE:008C394E mov dword ptr [eax+4], offset nullsub_1 CODE:008C3955 mov dword ptr [eax+8], offset sub_8C388C CODE:008C395C mov dword ptr [eax+0Ch], offset sub_8C3894 CODE:008C3963 mov dword ptr [eax+10h], offset nullsub_2 CODE:008C396A mov dword ptr [eax+14h], offset nullsub_3 CODE:008C3971 mov dword ptr [eax+18h], offset sub_8C38A4 CODE:008C3978 mov dword ptr [eax+1Ch], offset sub_8C38AC CODE:008C397F mov dword ptr [eax+20h], offset nullsub_4 CODE:008C3986 mov dword ptr [eax+24h], offset nullsub_5 CODE:008C398D mov dword ptr [eax+28h], offset nullsub_6 CODE:008C3994 mov dword ptr [eax+2Ch], offset sub_8C38C0 CODE:008C399B mov dword ptr [eax+30h], offset sub_8C38C8 CODE:008C39A2 mov dword ptr [eax+34h], offset sub_8C38D0 CODE:008C39A9 mov dword ptr [eax+38h], offset nullsub_7 CODE:008C39B0 mov dword ptr [eax+3Ch], offset nullsub_8 CODE:008C39B7 mov dword ptr [eax+40h], offset sub_8C38E0 CODE:008C39BE mov dword ptr [eax+44h], offset sub_8C38E8 CODE:008C39C5 mov dword ptr [eax+48h], offset nullsub_9 CODE:008C39CC mov dword ptr [eax+4Ch], offset nullsub_10 CODE:008C39D3 mov dword ptr [eax+50h], offset nullsub_11 CODE:008C39DA mov dword ptr [eax+54h], offset sub_8C38FC CODE:008C39E1 mov dword ptr [eax+58h], offset nullsub_12 CODE:008C39E8 mov dword ptr [eax+5Ch], offset sub_8C3908 CODE:008C39EF mov dword ptr [eax+60h], offset sub_8C3910 CODE:008C39F6 mov dword ptr [eax+64h], offset sub_8C3918 CODE:008C39FD mov dword ptr [eax+68h], offset sub_8C3920 CODE:008C3A04 mov dword ptr [eax+6Ch], offset sub_8C3928 CODE:008C3A0B mov dword ptr [eax+70h], offset sub_8C3930 CODE:008C3A12 mov dword ptr [eax+74h], offset sub_8C3938 CODE:008C3A19 pop ebp CODE:008C3A1A retn CODE:008C3A1A CreateInterface endp Пишу на Delphi Dll с экспортируемой процедурой CreateInterface TIn_Module = record // mov eax, offset unk_8C5668 Arrayof : Array [0..120] of byte ; Sub_Msvcrt: function(a4:integer):integer;stdcall; // sub_8C3880 sub_10002B10: procedure; // nullsub_1 sub_10001110: function(a4:integer):integer;stdcall; // sub_8C388C sub_10001120: function(a4:integer;a84:integer):integer;stdcall; // sub_8C3894 CloseAllHandle: procedure; // nullsub_2 Func_DeviceIoControl: procedure; // nullsub_3 sub_10001220: function(a4:integer):integer;stdcall; // sub_8C38A4 sub_100012F0: function(a4:integer):integer;stdcall; // sub_8C38AC sub_10001210: procedure; // nullsub_4 sub_10001160: procedure; // nullsub_5 sub_100011B0: procedure; // nullsub_6 sub_10001320: function(a4:integer;a8:integer;a16:integer):integer;stdcall; // sub_8C38C0 sub_10001370: function(a4:integer;a8:integer;a16:integer):integer;stdcall; // sub_8C38C8 sub_100013C0: function(a4:integer;a84:integer):integer;stdcall; // sub_8C38D0 sub_10001400: procedure; // nullsub_7 sub_10001450: procedure; // nullsub_8 sub_10001460: function(a4:integer;a84:integer):integer;stdcall; // sub_8C38E0 sub_10001530: function(a4:integer;a84:integer):integer;stdcall; // sub_8C38E8 sub_10001590: procedure; // nullsub_9 sub_10001600: procedure; // nullsub_10 sub_10001450copy: procedure; // nullsub_11 sub_10001640: function(a4:integer;a8:integer;a16:integer):integer;stdcall; // sub_8C38FC sub_10001750: procedure; // nullsub_12 sub_10001D20: function(a4:integer;a8:integer;a16:integer):integer;stdcall; // sub_8C3908 sub_10001D40: function(a4:integer;a8:integer;a16:integer):integer;stdcall; // sub_8C3910 sub_10001D60: function(a4:integer):integer;stdcall; // sub_8C3918 WriteCommand: function(a4:integer):integer;stdcall; // sub_8C3920 WriteCommand2: function(a4:integer;a84:integer):integer;stdcall; // sub_8C3928 ReadCommand: function(a4:integer;a84:integer):integer;stdcall; // sub_8C3930 Facet_locale_std__AEPAXI_Z: function(a4:integer):integer;stdcall; // sub_8C3938 end; обзываю ее fd_usb.dll запускаю менеджер, чтобы посмотреть что там передаеться смотрим в отладчике вылетает эксепшин что не так ???? |
|
Создано: 30 октября 2006 07:23 · Личное сообщение · #2 |
|
Создано: 30 октября 2006 10:16 · Поправил: s0larian · Личное сообщение · #3 crash_rider пишет: CODE:008C3943 mov eax, offset unk_8C5668 вот это что такое????? не понять.... В этот регистр попадает адрес структуры/класса - то есть указатель. И операции потом через него. Вот смотри кусок С++ который бы скомпилился в этот асм:
|
|
Создано: 30 октября 2006 10:30 · Поправил: s0larian · Личное сообщение · #4 |
|
Создано: 30 октября 2006 15:14 · Поправил: crash_rider · Личное сообщение · #5 |
|
Создано: 30 октября 2006 16:50 · Поправил: s0larian · Личное сообщение · #6 crash_rider пишет: т.е мне на это не стоит обращать внимание? Ась? Чего? Это ты к чему? То что "в догонку" - это пример на С++, который даст тебе код совместимый с этой DLL-кой. На него как раз и стоит посмотреть. Хотя, тебе, вроде, надо на Делфе, но я ей не польховолся года с 97го, и уже ничего не помню.... Знаю, что можно экспортировать и вызывать __stdcall функции, но как именно тебе это делать на паскале, да ещё и с указателем на структуру... пас. Как вариант, можешь сделать тонкую "прокладку" на С++ и потом вызывать что-нить другое (то есть свою библиотеку написаную на дельфе) |
|
Создано: 30 октября 2006 19:36 · Личное сообщение · #7 |
|
Создано: 30 октября 2006 21:35 · Личное сообщение · #8 НУ на дельфях пишу PIn_Module = ^TIn_Module; TIn_Module = record // mov eax, offset unk_8C5668 Sub_Msvcrt: function(a4:integer):integer;stdcall; // sub_8C3880 sub_10002B10: procedure; // nullsub_1 sub_10001110: function(a4:integer):integer;stdcall; // sub_8C388C sub_10001120: function(a4:integer;a84:integer):integer;stdcall; // sub_8C3894 CloseAllHandle: procedure; // nullsub_2 Func_DeviceIoControl: procedure; // nullsub_3 sub_10001220: function(a4:integer):integer;stdcall; // sub_8C38A4 sub_100012F0: function(a4:integer):integer;stdcall; // sub_8C38AC sub_10001210: procedure; // nullsub_4 sub_10001160: procedure; // nullsub_5 sub_100011B0: procedure; // nullsub_6 sub_10001320: function(a4:integer;a8:integer;a16:integer):integer;stdcall; // sub_8C38C0 sub_10001370: function(a4:integer;a8:integer;a16:integer):integer;stdcall; // sub_8C38C8 sub_100013C0: function(a4:integer;a84:integer):integer;stdcall; // sub_8C38D0 sub_10001400: procedure; // nullsub_7 sub_10001450: procedure; // nullsub_8 sub_10001460: function(a4:integer;a84:integer):integer;stdcall; // sub_8C38E0 sub_10001530: function(a4:integer;a84:integer):integer;stdcall; // sub_8C38E8 sub_10001590: procedure; // nullsub_9 sub_10001600: procedure; // nullsub_10 sub_10001450copy: procedure; // nullsub_11 sub_10001640: function(a4:integer;a8:integer;a16:integer):integer;stdcall; // sub_8C38FC sub_10001750: procedure; // nullsub_12 sub_10001D20: function(a4:integer;a8:integer;a16:integer):integer;stdcall; // sub_8C3908 sub_10001D40: function(a4:integer;a8:integer;a16:integer):integer;stdcall; // sub_8C3910 sub_10001D60: function(a4:integer):integer;stdcall; // sub_8C3918 WriteCommand: function(a4:integer):integer;stdcall; // sub_8C3920 WriteCommand2: function(a4:integer;a84:integer):integer;stdcall; // sub_8C3928 ReadCommand: function(a4:integer;a84:integer):integer;stdcall; // sub_8C3930 Facet_locale_std__AEPAXI_Z: function(a4:integer):integer;stdcall; // sub_8C3938 end; var // inputmod: TIn_Module; Ps_Module:TIn_Module; function CreateInterface: TIn_Module; stdcall; begin //inputmod.version := $100; // result := @inputmod; Ps_Module.Sub_Msvcrt:= Sub_Msvcrt; Ps_Module.sub_10002B10:=sub_10002B10; Ps_Module.sub_10001110:=sub_10001110; Ps_Module.sub_10001120:=sub_10001120; Ps_Module.CloseAllHandle:=CloseAllHandle; Ps_Module.Func_DeviceIoControl:= Func_DeviceIoControl; Ps_Module.sub_10001220:=sub_10001220; Ps_Module.sub_100012F0:=sub_100012F0; Ps_Module.sub_10001210:=sub_10001210; Ps_Module.sub_10001160:=sub_10001160; Ps_Module.sub_100011B0:=sub_100011B0; Ps_Module.sub_10001320:=sub_10001320; Ps_Module.sub_10001370:=sub_10001370; Ps_Module.sub_100013C0:=sub_100013C0; Ps_Module.sub_10001400:=sub_10001400; Ps_Module.sub_10001450:=sub_10001450; Ps_Module.sub_10001460:=sub_10001460; Ps_Module.sub_10001530:=sub_10001530; Ps_Module.sub_10001590:=sub_10001590; Ps_Module.sub_10001600:=sub_10001600; Ps_Module.sub_10001450copy:=sub_10001450copy; Ps_Module.sub_10001640:=sub_10001640; Ps_Module.sub_10001750:=sub_10001750; Ps_Module.sub_10001D20:=sub_10001D20; Ps_Module.sub_10001D40:=sub_10001D40; Ps_Module.sub_10001D60:=sub_10001D60; Ps_Module.WriteCommand:=WriteCommand; Ps_Module.WriteCommand2:=WriteCommand2; Ps_Module.ReadCommand:=ReadCommand; Ps_Module.Facet_locale_std__AEPAXI_Z:=Facet_locale_std__AEPAXI_Z; end; exports CreateInterface; |
|
Создано: 30 октября 2006 22:44 · Поправил: tundra37 · Личное сообщение · #9 crash_rider пишет: PIn_Module = ^TIn_Module; TIn_Module = record // mov eax, offset unk_8C5668 Разъясняю. Этот объект в нормальной DLL создается вне ее( или вне той процедуры, которую ты рипаешь). Тебе надо понять, кто его создает и как сделать так, чтобы указатель на него попал не в "небо", а к тебе. Эксепшн может быть по двум причинам : либо при засылке указателя в несуществующие адреса, либо при попытке работать с несозданным объектом. Кстати, а где у тебя record создается - ты пишешь в пучтой объект. А главное, хоть бы подумал : ну запихал ты адреса в рекорд - почему это все работать будет. Их же кто-то должен использовать, а у тебя как в той рекламе : " А ребята и не знают..." |
|
Создано: 30 октября 2006 23:00 · Личное сообщение · #10 хм... tundra37 пишет: А главное, хоть бы подумал : ну запихал ты адреса в рекорд - почему это все работать будет. Их же кто-то должен использовать, а у тебя как в той рекламе : " А ребята и не знают..." все ок я создал пустые фукции и процедуры! у них просто имена совпадают! function Sub_Msvcrt(a4:char):integer;stdcall; begin // end; procedure sub_10002B10; begin // end; function sub_10001110(a4:integer):integer;stdcall; begin end; ЛАдно приведу асм листинг там не просто они заносяться там трындец.... |
|
Создано: 30 октября 2006 23:01 · Поправил: crash_rider · Личное сообщение · #11 CreateInterface proc near .text:10001000 .text:10001000 var_14 = dword ptr -14h .text:10001000 var_10 = dword ptr -10h .text:10001000 var_C = dword ptr -0Ch .text:10001000 var_4 = dword ptr -4 .text:10001000 .text:10001000 push 274h .text:10001005 call ??2@YAPAXI@Z ; operator new(uint) для чего это? .text:1000100A add esp, 4 .text:1000100D test eax, eax .text:1000100F jz short loc_10001018 .text:10001011 mov ecx, eax .text:10001013 jmp loc_10001020 .text:10001018 ; ---------------------------------------------------------------------- ----- .text:10001018 .text:10001018 loc_10001018: ; CODE XREF: CreateInterface+Fj .text:10001018 xor eax, eax .text:1000101A retn .text:1000101A ; ---------------------------------------------------------------------- ----- .text:1000101B align 10h .text:10001020 .text:10001020 loc_10001020: ; CODE XREF: CreateInterface+13j .text:10001020 push 0FFFFFFFFh .text:10001022 push offset loc_10003A53 .text:10001027 mov eax, large fs:0 .text:1000102D push eax .text:1000102E mov large fs:0, esp .text:10001035 sub esp, 8 .text:10001038 push esi .text:10001039 mov esi, ecx .text:1000103B mov [esp+18h+var_14], esi .text:1000103F push 14h .text:10001041 mov [esp+1Ch+var_4], 0 .text:10001049 mov dword ptr [esi], offset off_10004070 <---- record c самими процедурами и функциями .text:1000104F call ??2@YAPAXI@Z ; operator new(uint) опять для чего это ? .text:10001054 add esp, 4 .text:10001057 mov [esp+18h+var_10], eax .text:1000105B test eax, eax .text:1000105D mov byte ptr [esp+18h+var_4], 1 .text:10001062 jz short loc_1000106E .text:10001064 push esi .text:10001065 mov ecx, eax .text:10001067 call sub_100027F0 .text:1000106C jmp short loc_10001070 .text:1000106E ; ---------------------------------------------------------------------- ----- .text:1000106E .text:1000106E loc_1000106E: ; CODE XREF: CreateInterface+62j .text:1000106E xor eax, eax .text:10001070 .text:10001070 loc_10001070: ; CODE XREF: CreateInterface+6Cj .text:10001070 mov ecx, [esp+18h+var_C] .text:10001074 mov [esi+4], eax .text:10001077 mov dword ptr [esi+270h], 0 .text:10001081 mov eax, esi .text:10001083 pop esi .text:10001084 mov large fs:0, ecx .text:1000108B add esp, 14h .text:1000108E retn .text:1000108E CreateInterface endp Если бы просто заносились процедуры и функции такого бы не было тут что то наворочено трындец! Помогите! |
|
Создано: 30 октября 2006 23:11 · Личное сообщение · #12 |
|
Создано: 31 октября 2006 07:58 · Поправил: tundra37 · Личное сообщение · #13 crash_rider пишет: .text:10001005 call ??2@YAPAXI@Z ; operator new(uint) для чего это? Во-первых, поставь опцию demangled name - будут имена с параметрами, а не кишмиш. ; void * __cdecl operator new(unsigned int) extrn ??2@YAPAXI@Z:dword Во-вторых, ИДА у меня старая или новая, проще было dll кинуть - не берет твою базу. ============================== Блин, ты помог мне загадку решить. Где была моя голова. Это враппер С++ для функции malloc В моей DLL еще были delete и еще пара операторов. Надо наверное новую ИДА ставить - там это должно быть приведено к нормальному виду. |
|
Создано: 31 октября 2006 09:40 · Личное сообщение · #14 |
|
Создано: 31 октября 2006 14:42 · Поправил: crash_rider · Личное сообщение · #15 2 s0larian пасиб tundra37 пишет: Блин, ты помог мне загадку решить. Где была моя голова. Это враппер С++ для функции malloc ида 5 берет это без проблем! но какна с++ или дельфи это выглядит чет не въеду зы ba57_31.10.2006_CRACKLAB.rU.tgz - fd_usb.dll |
|
Создано: 31 октября 2006 17:13 · Поправил: s0larian · Личное сообщение · #16 Это оригинальная dll? Что-то там совсем по-другому CreateInterface выглядит.... Хм... Вот код... почти всё, минус пару проверок:
|
|
Создано: 31 октября 2006 17:53 · Поправил: crash_rider · Личное сообщение · #17 |
|
Создано: 01 ноября 2006 03:37 · Личное сообщение · #18 crash_rider Big - это класс. new создает экземпляр объекта класса Big, похоже пустой - только память резервирует. s0larian пишет: sub_100227f0(); На это я бы особое внимание обратил. Наверняка она должна "достраивать" объект или наоборот его адрес куда-то засунуть. Скорее всего оффсет 0 - это функция Create, а в globall - ее generic variant. Осатльные поля наверное можно найти либо в технических доках на С++, либо методом ковыряния собственных классов, где структуры известны. Можно поиском найти именно данный класс, но слово Big не слишком специфично. Я С++ знаю слабо и только в теории в основном, т.ч. скромно умолкаю. Вчера нарыл скрипты для ИДА, которые для С++ , может таких нет в 5-й версии. d81a_01.11.2006_CRACKLAB.rU.tgz - msvc_reversing.zip |
|
Создано: 01 ноября 2006 03:49 · Поправил: crash_rider · Личное сообщение · #19 |
|
Создано: 01 ноября 2006 09:33 · Личное сообщение · #20 |
|
Создано: 01 ноября 2006 20:34 · Личное сообщение · #21 |
|
Создано: 01 ноября 2006 22:42 · Личное сообщение · #22 |
|
Создано: 01 ноября 2006 22:50 · Поправил: crash_rider · Личное сообщение · #23 Пишу пока на дельфях с++ не докачал еще TBig = class(TObject) public field1, field2: Cardinal; theRest: array[0..154] of Cardinal; lastField: Cardinal; end; TSmall = class(TObject) public field1, field2: Cardinal; theRest: array[0..154] of Cardinal; lastField: Cardinal; end; PInterface = ^TInterface; TInterface = record // mov eax, offset unk_8C5668 Sub_Msvcrt: function(a4: char): integer; stdcall; // sub_8C3880 sub_10002B10: procedure; // nullsub_1 sub_10001110: function(a4: integer): integer; stdcall; // sub_8C388C sub_10001120: function(a4: integer; a84: integer): integer; stdcall; // sub_8C3894 sub_10001140: function(a4: integer; a84: integer): integer; stdcall; // nullsub_2 Func_DeviceIoControl: procedure; // nullsub_3 sub_10001220: function(a4: integer): integer; stdcall; // sub_8C38A4 sub_100012F0: function(a4: integer): integer; stdcall; // sub_8C38AC sub_10001210: procedure; // nullsub_4 sub_10001160: procedure; // nullsub_5 sub_100011B0: procedure; // nullsub_6 sub_10001320: function(a4: integer; lpBuffer: Dword; a16: integer): integer; stdcall; // sub_8C38C0 sub_10001370: function(a4: integer; lpBuffer: Dword; a16: integer): integer; stdcall; // sub_8C38C8 sub_100013C0: function(a4: integer; a84: integer): integer; stdcall; // sub_8C38D0 sub_10001400: procedure; // nullsub_7 sub_10001450: procedure; // nullsub_8 sub_10001460: function(a4: integer; a84: integer): integer; stdcall; // sub_8C38E0 sub_10001530: function(a4: integer; a84: integer): integer; stdcall; // sub_8C38E8 sub_10001590: procedure; // nullsub_9 sub_10001600: procedure; // nullsub_10 sub_10001450copy: procedure; // nullsub_11 sub_10001640: function(a4: integer; a8: integer; a16: integer): integer; stdcall; // sub_8C38FC sub_10001750: procedure; // nullsub_12 sub_10001D20: function(a4: integer; a8: integer; a16: integer): integer; stdcall; // sub_8C3908 sub_10001D40: function(a4: integer; a8: integer; a16: integer): integer; stdcall; // sub_8C3910 sub_10001D60: function(lpBuffer: Dword): integer; stdcall; // sub_8C3918 sub_10001D70: function(lpBuffer: Dword): integer; stdcall; // sub_8C3920 sub_10001D80: function(lpBuffer: Dword; a84: Dword): integer; stdcall; // sub_8C3928 sub_10001DA0: function(lpBuffer: Dword; a84: Dword): integer; stdcall; // sub_8C3930 // Facet_locale_std__AEPAXI_Z: function(a4:char):integer;stdcall; // sub_8C3938 end; var Ps_Module: TInterface; function CreateInterface: TBig; stdcall var P1: TBig; p2: Tsmall; begin p1 := TBig.Create; //0x274 bytes, no constructor Ps_Module.Sub_Msvcrt := Sub_Msvcrt; Ps_Module.sub_10002B10 := sub_10002B10; Ps_Module.sub_10001110 := sub_10001110; Ps_Module.sub_10001120 := sub_10001120; Ps_Module.sub_10001140 := sub_10001140; Ps_Module.Func_DeviceIoControl := Func_DeviceIoControl; Ps_Module.sub_10001220 := sub_10001220; Ps_Module.sub_100012F0 := sub_100012F0; Ps_Module.sub_10001210 := sub_10001210; Ps_Module.sub_10001160 := sub_10001160; Ps_Module.sub_100011B0 := sub_100011B0; Ps_Module.sub_10001320 := sub_10001320; Ps_Module.sub_10001370 := sub_10001370; Ps_Module.sub_100013C0 := sub_100013C0; Ps_Module.sub_10001400 := sub_10001400; Ps_Module.sub_10001450 := sub_10001450; Ps_Module.sub_10001460 := sub_10001460; Ps_Module.sub_10001530 := sub_10001530; Ps_Module.sub_10001590 := sub_10001590; Ps_Module.sub_10001600 := sub_10001600; Ps_Module.sub_10001450copy := sub_10001450copy; Ps_Module.sub_10001640 := sub_10001640; Ps_Module.sub_10001750 := sub_10001750; Ps_Module.sub_10001D20 := sub_10001D20; Ps_Module.sub_10001D40 := sub_10001D40; Ps_Module.sub_10001D60 := sub_10001D60; Ps_Module.sub_10001D70 := sub_10001D70; Ps_Module.sub_10001D80 := sub_10001D80; Ps_Module.sub_10001DA0 := sub_10001DA0; p1.field1 := cardinal(@Ps_Module); // +0..... òî ÷òî ëåæèò â 0x10004070 p2 := TSmall.Create; // 0x14 bytes, no constructor //sub_100227f0(); p1.field2 := cardinal(p2); // +4 p1.lastField := 0; // +0x270 Result := p1; end; exports CreateInterface; что должно передоваться? P1:TBig или function CreateInterface: TInterface; stdcall ? |
|
Создано: 02 ноября 2006 15:31 · Личное сообщение · #24 |
|
Создано: 02 ноября 2006 17:09 · Поправил: crash_rider · Личное сообщение · #25 |
|
Создано: 03 ноября 2006 10:14 · Личное сообщение · #26 какими утилами, ты что Кусок С++ кода я тебе набил смотря в Иду... Как ещё. Так что, как прогресс? Кста, имея DLL проект в VS2005 ты сможешь поставить breakpoint в своём коде, прописать оригинальный exe в debug settings, запустить debugger, пройтись по своему коду, переключиться в asm и и потом пройтись по главной проге. |
|
Создано: 04 ноября 2006 05:11 · Личное сообщение · #27 Пока не как мля скачал VS2005 express edition а там нету *.H файлов для компиляции.... ааааа как я люблю микра софт счас ищу от 7 -ки фалы (windows.h и т.д.) s0larian пишет: Кста, имея DLL проект в VS2005 ты сможешь поставить breakpoint в своём коде, прописать оригинальный exe в debug settings, запустить debugger, пройтись по своему коду, переключиться в asm и и потом пройтись по главной проге. так и делал ток на Delphi Пока не как с классами завис..delphi не совместим с ними походу (я не разу не мог нормально запустить С++ классы из Dll в дельфи:s13 Ктонть юзал Thumb decompiler v0.1 by Ludvig Strigeus <luddes(at)gmail(dot)com> ?что то он не появляеться в меню Plugins |
|
Создано: 05 ноября 2006 04:19 · Личное сообщение · #28 2 s0larian спасибо за код!!! s0larian пишет: Кста, имея DLL проект в VS2005 ты сможешь поставить breakpoint в своём коде, прописать оригинальный exe в debug settings, запустить debugger, пройтись по своему коду, переключиться в asm и и потом пройтись по главной проге. Ты мне идейку подкинул! скопильнуть DLL на VC++ 6! Dll то на VC++ 6 написана! мой код DLL на асм. должен быть точь в точь после анализа в IDA! а если не совпадает значит косяк... Пойду диск с шестеркой искать... зы... вот с классами вроде разобрался... но все равно ексепшены летят GetLastError кричит типа класса такого нет! когда пытаюсь ему подсунуть BIG ! s0larian подмоги че не так делаю ? код проги с с++ на дельфи перевести не проблема, но вот с классами что то запутался я..... |
|
Создано: 06 ноября 2006 06:00 · Личное сообщение · #29 |
|
Создано: 06 ноября 2006 09:50 · Личное сообщение · #30 |
. 1 . 2 . 3 . >> |
eXeL@B —› Программирование —› Снова про DLL :( |