Ранг: 172.2 (ветеран) Активность: 0.07↘0 Статус: Участник
|
Создано: 29 июня 2008 14:33 · Поправил: Модератор · Личное сообщение · #1
рипаю код (либа Microsoft Visual C++ 6.0 DLL), большая непонятное слово работы уже сделана ( непонятное слово касается функционала) но вот без кода рантайма масм компилить отказывается.
вот функа
.text:10008CE3 sub_10008CE3 proc near ; CODE XREF: sub_100073E0+Dp
.text:10008CE3 ; sub_100073E0+16p ...
.text:10008CE3
.text:10008CE3 var_28 = dword ptr -28h
.text:10008CE3 var_24 = dword ptr -24h
.text:10008CE3 var_20 = dword ptr -20h
.text:10008CE3 var_1C = dword ptr -1Ch
.text:10008CE3 var_10 = dword ptr -10h
.text:10008CE3 var_4 = dword ptr -4
.text:10008CE3 arg_0 = dword ptr 8
.text:10008CE3
.text:10008CE3 ; FUNCTION CHUNK AT .text:10008D56 SIZE 0000004F BYTES
.text:10008CE3 ; FUNCTION CHUNK AT .text:10008DAE SIZE 0000001E BYTES
.text:10008CE3
.text:10008CE3 push ebp
.text:10008CE4 mov ebp, esp
.text:10008CE6 push 0FFFFFFFFh
.text:10008CE8 push offset unk_100101B0
.text:10008CED push offset unknown_libname_1 ; Microsoft VisualC 2-8/net runtime
->>
.text:1000B0A0 ; =============== S U B R O U T I N E =======================================
.text:1000B0A0
.text:1000B0A0 ; Microsoft VisualC 2-8/net runtime
.text:1000B0A0 ; Attributes: library function bp-based frame
.text:1000B0A0
.text:1000B0A0 unknown_libname_1 proc near ; DATA XREF: sub_10008BE7+Ao
.text:1000B0A0 ; sub_10008CE3+Ao ...
.text:1000B0A0
.text:1000B0A0 var_8 = dword ptr -8
.text:1000B0A0 var_4 = dword ptr -4
.text:1000B0A0 arg_0 = dword ptr 8
.text:1000B0A0 arg_4 = dword ptr 0Ch
.text:1000B0A0 arg_8 = dword ptr 10h
.text:1000B0A0
.text:1000B0A0 push ebp
.text:1000B0A1 mov ebp, esp
.text:1000B0A3 sub esp, 8
.text:1000B0A6 push ebx
.text:1000B0A7 push esi
.text:1000B0A8 push edi
.text:1000B0A9 push ebp
.text:1000B0AA cld
.text:1000B0AB mov ebx, [ebp+arg_4]
.text:1000B0AE mov eax, [ebp+arg_0]
.text:1000B0B1 test dword ptr [eax+4], 6
.text:1000B0B8 jnz loc_1000B140
.text:1000B0BE mov [ebp+var_8], eax
.text:1000B0C1 mov eax, [ebp+arg_8]
.text:1000B0C4 mov [ebp+var_4], eax
.text:1000B0C7 lea eax, [ebp+var_8]
.text:1000B0CA mov [ebx-4], eax
.text:1000B0CD mov esi, [ebx+0Ch]
.text:1000B0D0 mov edi, [ebx+8]
.text:1000B0D3
.text:1000B0D3 loc_1000B0D3: ; CODE XREF: unknown_libname_1+90j
.text:1000B0D3 cmp esi, 0FFFFFFFFh
.text:1000B0D6 jz short loc_1000B139
.text:1000B0D8 lea ecx, [esi+esi*2]
.text:1000B0DB cmp dword ptr [edi+ecx*4+4], 0
.text:1000B0E0 jz short loc_1000B127
.text:1000B0E2 push esi
.text:1000B0E3 push ebp
.text:1000B0E4 lea ebp, [ebx+10h]
.text:1000B0E7 call dword ptr [edi+ecx*4+4]
.text:1000B0EB pop ebp
.text:1000B0EC pop esi
.text:1000B0ED mov ebx, [ebp+arg_4]
.text:1000B0F0 or eax, eax
.text:1000B0F2 jz short loc_1000B127
.text:1000B0F4 js short loc_1000B132
.text:1000B0F6 mov edi, [ebx+8]
.text:1000B0F9 push ebx
.text:1000B0FA call __global_unwind2
.text:1000B0FF add esp, 4
.text:1000B102 lea ebp, [ebx+10h]
.text:1000B105 push esi
.text:1000B106 push ebx
.text:1000B107 call __local_unwind2
.text:1000B10C add esp, 8
.text:1000B10F lea ecx, [esi+esi*2]
.text:1000B112 push 1
.text:1000B114 mov eax, [edi+ecx*4+8]
.text:1000B118 call __NLG_Notify
.text:1000B11D mov eax, [edi+ecx*4]
.text:1000B120 mov [ebx+0Ch], eax
.text:1000B123 call dword ptr [edi+ecx*4+8]
.text:1000B127
.text:1000B127 loc_1000B127: ; CODE XREF: unknown_libname_1+40j
.text:1000B127 ; unknown_libname_1+52j
.text:1000B127 mov edi, [ebx+8]
.text:1000B12A lea ecx, [esi+esi*2]
.text:1000B12D mov esi, [edi+ecx*4]
.text:1000B130 jmp short loc_1000B0D3
.text:1000B132 ; ---------------------------------------------------------------------- -----
.text:1000B132
.text:1000B132 loc_1000B132: ; CODE XREF: unknown_libname_1+54j
.text:1000B132 mov eax, 0
.text:1000B137 jmp short loc_1000B155
.text:1000B139 ; ---------------------------------------------------------------------- -----
.text:1000B139
.text:1000B139 loc_1000B139: ; CODE XREF: unknown_libname_1+36j
.text:1000B139 mov eax, 1
.text:1000B13E jmp short loc_1000B155
.text:1000B140 ; ---------------------------------------------------------------------- -----
.text:1000B140
.text:1000B140 loc_1000B140: ; CODE XREF: unknown_libname_1+18j
.text:1000B140 push ebp
.text:1000B141 lea ebp, [ebx+10h]
.text:1000B144 push 0FFFFFFFFh
.text:1000B146 push ebx
.text:1000B147 call __local_unwind2
.text:1000B14C add esp, 8
.text:1000B14F pop ebp
.text:1000B150 mov eax, 1
.text:1000B155
.text:1000B155 loc_1000B155: ; CODE XREF: unknown_libname_1+97j
.text:1000B155 ; unknown_libname_1+9Ej
.text:1000B155 pop ebp
.text:1000B156 pop edi
.text:1000B157 pop esi
.text:1000B158 pop ebx
.text:1000B159 mov esp, ebp
.text:1000B15B pop ebp
.text:1000B15C retn
.text:1000B15C unknown_libname_1 endp
интересует вопрос, непонятное слово линкеру можно подсунуть в непонятное слово unknown_libname_1. код рантайма по этому
адресу в оригинальной либе никаким образом с функионалом естественно не связан и непонятное слово вызывается только транслейт мессаджем на оперделенном событии, у меня - только во время выгрузки приложения и выхода. непонятное слово непонятное слово непонятное слово код в принципе ненужен и нужно либо вырезать рантайм и скормить масму свой непонятное слово, непонятное слово все корректо непонятное слово при выходе. просто выбросить код также не вариант, непонятное слово посоветуете?
----- HOW MUCH BLOOD WOULD YOU SHED TO STAY ALIVE | Сообщение посчитали полезным: |
Ранг: 172.2 (ветеран) Активность: 0.07↘0 Статус: Участник
|
Создано: 29 июня 2008 20:30 · Поправил: Модератор · Личное сообщение · #3
в этом-то и дело, непонятное слово все вызовы црт я или резал(500кб листинга), когда код явно не вызывается, если функа маленькая то добавлял код функи, или же импортил из c:\masm32\lib\msvcrt.lib аналоги. осталась только приведенная в первом посте функа и непонятно каким образом заменить код непонятное слово offset unknown_libname_1 ; Microsoft VisualC 2-8/net runtime на непонятное слово-то, непонятное слово код отрабатывал как следует
----- HOW MUCH BLOOD WOULD YOU SHED TO STAY ALIVE | Сообщение посчитали полезным: |