Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Дублировать вызов из другой программы  (Прочитано 21830 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Sergey Vas
Новенький

ru
Offline Offline

« : 09-10-2015 09:52 » 

Доброго времени.
Уважаемые специалисты нужна консультация. Появилась нестандартная задача как решить не знаю, никогда не приходилось дублировать вызовы из другого приложение. Задача такая требуется перехватывать или дублировать функцию с аргументами и передавать их в мою программу. Программа в которой нужно перехватывать вызов написана на VB pcode. Исходников нет. есть только после декомпилятора. Нужный мне код нашел. А дальше что делать большой вопрос для меня. Если у кого был подобный опыт поделитесь, буду благодарен за любую помощь.
Вот функция которую нужно передать в внешнюю программу.
Код:
Public Function ??????????_??????????????_?????????(Command_a, NomVann_a) '440C2C
  'Data Table: 405784
  Dim var_94 As String
  Dim var_98 As String
  Dim var_BC As Integer
  loc_440AEF: If (NomVann_a <> 0) Then
  loc_440B0C:   var_8C = "19" & Command_a & " " & CStr(NomVann_a)
  loc_440B0F:   var_94 = "": var_98 = "" = "" 'Ignore this
  loc_440B1B: Else
  loc_440B22:   var_8C = "19" & Command_a
  loc_440B25: End If
  loc_440B56: var_98 = Mid$(Trim$(Send_ReciveTCP(var_8C)), 1, 2)
  loc_440B5E: var_94 = "": var_98 = "" = "" 'Ignore this
  loc_440B67: var_BC = "" 'Ignore this
  loc_440B6A: If (var_98 <> "ok") Then
  loc_440B7B:   var_90 = "Err-" & Command_a & " ???"
  loc_440B7E:   var_94 = "" 'Ignore this
  loc_440B84: Else
  loc_440BA4:   var_98 = Mid$(Trim$(var_90), 4, 2)
  loc_440BAC:   var_94 = "":   var_98 = "" = "" 'Ignore this
  loc_440BB5:   var_BC = "" 'Ignore this
  loc_440BB8:   If (var_98 = "er") Then
  loc_440BC9:     var_90 = "Err-" & Command_a & " STOP"
  loc_440BCC:     var_94 = "" 'Ignore this
  loc_440BD2:   Else
  loc_440BF2:     var_98 = Mid$(Trim$(var_90), 4, 2)
  loc_440BFA:     var_94 = "":     var_98 = "" = "" 'Ignore this
  loc_440C03:     var_BC = "" 'Ignore this
  loc_440C06:     If (var_98 = "es") Then
  loc_440C17:       var_90 = "Err-" & Command_a & " ????"
  loc_440C1A:       var_94 = "" 'Ignore this
  loc_440C1D:     End If
  loc_440C1D:   End If
  loc_440C1D: End If
  loc_440C20: var_88 = var_90
  loc_440C23: Óïðàâëåíèå_ÀâòîÎïåðàòîðîì_Êîíòðîëåð = %x1
  loc_440C29: IDE.GoTo loc_440C29 'Ignore this
  loc_440C2B: IDE.GoTo loc_440C37 'Ignore this
End Function
Записан
Sergey Vas
Новенький

ru
Offline Offline

« Ответ #1 : 09-10-2015 11:44 » 

Код той же функция только декомпилятор P32Dasm.
Есть еще мысль сделать модуль на vb6 и добавить его в  hex редакторе, а перед FF2D ZeroRetVal добавить строчку перехода на код добавленного модуля. Какие еще варианты есть?
Код:
Function frmUpravlenie.Óïðàâëåíèå_ÀâòîÎïåðàòîðîì_Êîíòðîëåð (Command_a, NomVann_a) ----
00040C98: FF2D ZeroRetVal
00040C9A: 80   ILdI4 param_10
00040C9D: F5   LitI4: 0 (0x0)
00040CA2: CC   NeI4 <>
00040CA3: 1C   BranchF 00040CCF
00040CA6: 1B   LitStr: "19"
00040CA9: 80   ILdI4 param_C
00040CAC: 2A   ConcatStr
00040CAD: 23   FStStrNoPop var_94
00040CB0: 1B   LitStr: " "
00040CB3: 2A   ConcatStr
00040CB4: 23   FStStrNoPop var_98
00040CB7: 80   ILdI4 param_10
00040CBA: FBFE CStrI4
00040CBC: 23   FStStrNoPop var_9C
00040CBF: 2A   ConcatStr
00040CC0: 31   FStStr var_8C
00040CC3: 32   FFreeStr var_94 var_98 var_9C
00040CCC: 1E   Branch 00040CD9
00040CCF: loc_00040CA3
00040CCF: 1B   LitStr: "19"
00040CD2: 80   ILdI4 param_C
00040CD5: 2A   ConcatStr
00040CD6: 31   FStStr var_8C
00040CD9: loc_00040CCC
00040CD9: 04   FLdRfVar var_94
00040CDC: 6C   ILdRf var_8C
00040CDF: 10   ThisVCallHresult frmUpravlenie.Send_ReciveTCP (SendData_a)
00040CE4: 3E   FLdZeroAd var_94
00040CE7: 31   FStStr var_90
00040CEA: 6C   ILdRf var_90
00040CED: 0B   ImpAdCallI2 Trim$()
00040CF2: 31   FStStr var_9C
00040CF5: 28   LitVarI2: var_BC = 2 (0x2)
00040CFA: F5   LitI4: 1 (0x1)
00040CFF: 3E   FLdZeroAd var_9C
00040D02: 23   FStStrNoPop var_94
00040D05: 0B   ImpAdCallI2 Mid$()
00040D0A: 23   FStStrNoPop var_98
00040D0D: 1B   LitStr: "ok"
00040D10: FB3D NeStr <>
00040D12: 32   FFreeStr var_94 var_98 var_9C
00040D1B: 35   FFree1Var var_BC
00040D1E: 1C   BranchF 00040D38
00040D21: 1B   LitStr: "Err-"
00040D24: 80   ILdI4 param_C
00040D27: 2A   ConcatStr
00040D28: 23   FStStrNoPop var_94
00040D2B: 1B   LitStr: " ???"
00040D2E: 2A   ConcatStr
00040D2F: 31   FStStr var_90
00040D32: 2F   FFree1Str var_94
00040D35: 1E   Branch 00040DD1
00040D38: loc_00040D1E
00040D38: 6C   ILdRf var_90
00040D3B: 0B   ImpAdCallI2 Trim$()
00040D40: 31   FStStr var_9C
00040D43: 28   LitVarI2: var_BC = 2 (0x2)
00040D48: F5   LitI4: 4 (0x4)
00040D4D: 3E   FLdZeroAd var_9C
00040D50: 23   FStStrNoPop var_94
00040D53: 0B   ImpAdCallI2 Mid$()
00040D58: 23   FStStrNoPop var_98
00040D5B: 1B   LitStr: "er"
00040D5E: FB30 EqStr =
00040D60: 32   FFreeStr var_94 var_98 var_9C
00040D69: 35   FFree1Var var_BC
00040D6C: 1C   BranchF 00040D86
00040D6F: 1B   LitStr: "Err-"
00040D72: 80   ILdI4 param_C
00040D75: 2A   ConcatStr
00040D76: 23   FStStrNoPop var_94
00040D79: 1B   LitStr: " STOP"
00040D7C: 2A   ConcatStr
00040D7D: 31   FStStr var_90
00040D80: 2F   FFree1Str var_94
00040D83: 1E   Branch 00040DD1
00040D86: loc_00040D6C
00040D86: 6C   ILdRf var_90
00040D89: 0B   ImpAdCallI2 Trim$()
00040D8E: 31   FStStr var_9C
00040D91: 28   LitVarI2: var_BC = 2 (0x2)
00040D96: F5   LitI4: 4 (0x4)
00040D9B: 3E   FLdZeroAd var_9C
00040D9E: 23   FStStrNoPop var_94
00040DA1: 0B   ImpAdCallI2 Mid$()
00040DA6: 23   FStStrNoPop var_98
00040DA9: 1B   LitStr: "es"
00040DAC: FB30 EqStr =
00040DAE: 32   FFreeStr var_94 var_98 var_9C
00040DB7: 35   FFree1Var var_BC
00040DBA: 1C   BranchF 00040DD1
00040DBD: 1B   LitStr: "Err-"
00040DC0: 80   ILdI4 param_C
00040DC3: 2A   ConcatStr
00040DC4: 23   FStStrNoPop var_94
00040DC7: 1B   LitStr: " ????"
00040DCA: 2A   ConcatStr
00040DCB: 31   FStStr var_90
00040DCE: 2F   FFree1Str var_94
00040DD1: loc_00040DBA
00040DD1: loc_00040D83
00040DD1: loc_00040D35
00040DD1: 6C   ILdRf var_90
00040DD4: 43   FStStrCopy var_88
00040DD7: FF2F ExitProcCbHresult
Записан
Sergey Vas
Новенький

ru
Offline Offline

« Ответ #2 : 09-10-2015 11:56 » new

Уточню что требуется, неясно написал.
Нужно написать программу которая будет получать событие вызова функции с аргументами frmUpravlenie.Óïðàâëåíèå_ÀâòîÎïåðàòîðîì_Êîíòðîëåð (Command_a, NomVann_a) ---- из программы на которую нет исходников.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines