LINUX.ORG.RU

Сообщения vm_prog

 

Почему console.log работает не везде (cocos2djs)?

Здравствуйте.
Помогите разобраться с javascript для cocos2djs.
Почему просматривая adb logcat я вижу вывод:
my debug NetWorkManager1
my debug NetWorkManager2
и не вижу:
my debug NetWorkManager3
my debug NetWorkManager4

          n.NetWorkManager = void 0;      
          console.log("my debug NetWorkManager1");
          var a = cc._decorator,
              s = a.ccclass,
              l = e("../../common/ecdh/ecdhHandler"),
              d = e("../../components/game/humanboy/HGameScene"),
              f = e("../../../../pkf/script/common/config/PKFConfig"),
              h = function(e) {
                  i(t, e);
                  console.log("my debug NetWorkManager2");
                  function t() {
                      console.log("my debug NetWorkManager3");
                      var t = null !== e && e.apply(this, arguments) || this;
                      t._isswitchServer = !1;         
                      return t;
                  }
                  n = t;
                  t.getInstance = function() {    
                      console.log("my debug NetWorkManager4");
                      if (!this._g_instance) {        
                         this._g_instance = new n();     
                         this._g_instance.init();        
                     }
                     return this._g_instance;
                  };
                  t.prototype.init = function() {
                      console.log("my debug NetWorkManager5");

 , ,

vm_prog
()

Один хост и два приложения. Кто первый попадет в цепочку OUTPUT?

Прошу помощи для понимания теории. Есть linux host. На нем запущены два приложения:

  1. Android emulator
  2. Mitmproxy Вопросы:
  3. Оба приложения устанавливают исходящие соединения. Согласно описанию iptables пакеты исходящие из приложения должны пройти через цепочку OUTPUT. Мне нужно понять в системе под каждое приложение создаётся своя цепочка OUTPUT или пакеты обоих приложений в хронологической последовательности проходят через единую цепочку OUTPUT?
  4. Правильно я понимаю, что в самом процессе android-emulator живёт полный набор всех цепочек и они не имеют отношения к цепочкам host-а? Таким образом после POSTROUTING в эмуляторе пакет попадает в OUTPUT host машины?
  5. Если все приблизительно так как я описал, то как правильнее загнать трафик из эмулятора в proxy в случае когда они запущены на одном хосте? По моим соображениям примерно так: iptables -t nat -A OUTPUT -p tcp -s 127.0.0.1 –dport 80 -j REDIRECT –to-ports 8080 Но это не работает.
  6. Если я в недрах эмулятора делаю пометку исходящих пакетов при помощи -j MARK, то сохранятся ли эти тетки в пакетах на host машине?

 , , , ,

vm_prog
()

Методика поиска аналогичного кода в бинарном файле нового релиза.

Здравствуйте. Попала в руки такая задача. Есть две dll. Как мне объяснили второй файл (new.dll) это новый релиз первого файла (old.dll). Оба файла собраны под x64. Мне нужно найти во что реинкорнировали несколько функций из old.dll в new.dll. Ниже пример одной из функций. Прошу высказать мысли о моем подходе к поиску новой версии кода: Начал я с того, что при помощи rdare2 нашел все функции в old.dll (более 40 тыс), создал файл с сигнатурами и натравил на новый файл. В итоге ничего не нашлось. Делаю вывод, что изменения более чем косметические. Далее я решил искать следующим образом:

  1. Делаю поиск по кускам кода функции. Беру пролог перед вызовом функции и ищу эту последовательность байт в new.dll.
  2. Пытаюсь найти константы, строки и прочие магические цифры, которые фигурируют в функции и ищу их в new.dll.
  3. Анализирую все функции, которые вызывают нужную функцию и пытаюсь найти аналогичный набор вызывающих функций в new.dll.
  4. Определить последовательность вызывающих функций до самой первой (верхней) и найти аналогичную череду вызовов в новом файле.
  5. Анализирую все функции, которые вызываются из нужной функции и пытаюсь найти аналогичный набор вызываемых функций в new.dll
  6. Тут признаюсь, что все выше перечисленное мне не помогло. Далее думаю, что т.к. встречаются такие вызовы call qword ptr [rax+18h] (их штук 8 в анализируемой функции), то вероятно это вызовы методов объекта(-ов). Вероятно можно найти vftable и понять к какому классу эти методы относятся и уже составить набор класс.метод, которые вызываются в моей функции. Далее искать в new.dll где вызывается такая череда методов из соответствующих классов.
  7. Наверное можно попытаться найти где создавался объект и откуда этот this пришел в мою функцию. Далее искать аналогичный след в new.dll. Не уверен, что этот метод можно применить без отладки этой dll. Запускать dll не понятно как т.к. экспортируемых функций всего пять: Osf::OSFCreateOfficeExtensionsDialogUser Osf::OSFCreateOsfOartGallery DllGetLCID PPMain DllEntryPoint

Что из перечисленных подходов поиска утопия, а что нет? Может есть еще проверенные варианты?

Пример одной из функций:

.text:00000001806FFB30                               f1              proc near               ; CODE XREF: sub_1806F3630+172↑p
.text:00000001806FFB30                                                                       ; sub_1806FFC70+27↓p ...
.text:00000001806FFB30
pperrinfo        = qword ptr -260h
perrinfo          = qword ptr -258h
var_250         = qword ptr -250h
var_248         = dword ptr -248h
var_244         = qword ptr -244h
var_23C         = word ptr -23Ch
var_30          = qword ptr -30h
; __unwind { // __GSHandlerCheck
push    rbp
push    rbx
push    rsi
push    rdi
push    r14
lea      rbp, [rsp-160h] ; Load Effective Address
sub     rsp, 260h       ; Integer Subtraction
mov    rax, cs:__security_cookie
xor     rax, rsp        ; Logical Exclusive OR
mov    [rbp+180h+var_30], rax
mov    rbx, rcx
mov    esi, r8d
lea      rcx, [rsp+280h+pperrinfo] ; pperrinfo
mov    rdi, rdx
call     cs:CreateErrorInfo ; Indirect Call Near Procedure
xor     r14d, r14d      ; Logical Exclusive OR
test    eax, eax        ; Logical Compare
jns     short loc_1806FFB80 ; Jump if Not Sign (SF=0)
mov   ecx, 8B843h
call     Mso20Win32Client_1159 ; Call Procedure
jmp    loc_1806FFC52   ; Jump
; ---------------------------------------------------------------------------
loc_1806FFB80:                          ; CODE XREF: f1+3F↑j
mov   rdx, cs:qword_181031910
test    rdx, rdx        ; Logical Compare
jz       short loc_1806FFB9D ; Jump if Zero (ZF=1)
mov   rcx, [rsp+280h+pperrinfo]
mov   rdx, [rdx]
mov   rax, [rcx]
mov   rdx, [rdx]
call    qword ptr [rax+18h] ; Indirect Call Near Procedure
loc_1806FFB9D:                          ; CODE XREF: f1+5A↑j
mov     rcx, [rsp+280h+pperrinfo]
mov     rdx, rdi
mov     rax, [rcx]
call      qword ptr [rax+30h] ; Indirect Call Near Procedure
mov     rcx, [rsp+280h+pperrinfo]
mov     edx, esi
mov     rax, [rcx]
call      qword ptr [rax+38h] ; Indirect Call Near Procedure
mov     rcx, cs:qword_181038800
lea       rax, [rsp+280h+var_23C] ; Load Effective Address
mov     r9d, 100h
mov     [rsp+280h+var_250], rax
lea       r8, [rsp+280h+var_23C] ; Load Effective Address
mov     [rsp+280h+var_244], r9
mov     edx, 61850043h
mov     [rsp+280h+var_248], 1
mov     [rsp+280h+var_23C], r14w
call      Mso30Win32Client_27 ; Call Procedure
mov     rcx, [rsp+280h+pperrinfo]
add      eax, eax        ; Add
mov     rdx, [rsp+280h+var_250]
mov     dword ptr [rsp+280h+var_244+4], eax
mov     rax, [rcx]
call      qword ptr [rax+20h] ; Indirect Call Near Procedure
mov     rcx, [rsp+280h+pperrinfo]
mov     rdx, rbx
mov     rax, [rcx]
call      qword ptr [rax+28h] ; Indirect Call Near Procedure
mov     rcx, [rsp+280h+pperrinfo]
lea       r8, [rsp+280h+perrinfo] ; Load Effective Address
lea       rdx, unk_180C909A8 ; Load Effective Address
mov     rax, [rcx]
call      qword ptr [rax] ; Indirect Call Near Procedure
test      eax, eax        ; Logical Compare
js         short loc_1806FFC47 ; Jump if Sign (SF=1)
mov     rdx, [rsp+280h+perrinfo] ; perrinfo
xor      ecx, ecx        ; dwReserved
call      cs:SetErrorInfo ; Indirect Call Near Procedure
mov     rcx, [rsp+280h+perrinfo]
mov     rax, [rcx]
call      qword ptr [rax+10h] ; Indirect Call Near Procedure
loc_1806FFC47:                          ; CODE XREF: f1+FD↑j
mov     rcx, [rsp+280h+pperrinfo]
mov     rax, [rcx]
call      qword ptr [rax+10h] ; Indirect Call Near Procedure
loc_1806FFC52:                          ; CODE XREF: f1+4B↑j
mov     rcx, [rbp+150h]
xor      rcx, rsp        ; Logical Exclusive OR
call      sub_1801BFAE0   ; Call Procedure
add     rsp, 260h       ; Add
pop     r14
pop     rdi
pop     rsi
pop     rbx
pop     rbp
retn                    ; Return Near from Procedure
; } // starts at 1806FFB30
f1              endp

 , , , ,

vm_prog
()

Сборка ltrace для android (ARMv7).

Здравствуйте. Есть цель собрать ltrace, чтобы она работала на Android 7.1.2 (ARMv7). Пытаюсь сделать кросскомпиляцию под ARM на host машине debian 10 x86_64 вот такими командами: $autoreconf -i $./configure –build x86_64-pc-linux-gnu –host=arm-none-linux-gnueabi –target=arm-none-linux-gnueabi LDFLAGS=«-static» CC=arm-linux-gnueabihf-gcc –disable-maintainer-mode

Все это падает с такими словами: checking for elf.h… yes checking gelf.h usability… yes checking gelf.h presence… yes checking for gelf.h… yes checking for elf_begin in -lelf… no configure: error: *** libelf not found on your system

Немного погуглив понял, что для сборки нужны библиотеки из elfutils.

Отсюда два вопроса:

  1. Правилно я понимаю, что для решения проблема нужно отложить сборку ltrace и сначала аналогичными командами собать elfutils для ARMv7? Потом уже при сборке ltrace указывать на пути к elf под ARMv7? Или нужно как то специальным образом править configure.ac, чтобы оба исходника собирались одновременно?

  2. Я понял, что в configure.ac есть макрос, который проверяет есть ли в библиотеке elf функция elf_begin AC_CHECK_LIB([elf], [elf_begin], [libelf_LIBS=«-lelf»], [AC_MSG_ERROR([*** libelf not found on your system])]

Отсюда вопрос. Как можно добавить вывод путей по которым он делает поиск библиотеки elf? Как я понимаю он сейчас делает поиск по библиотекам host системы, которые собраны для x86_64.

 , , , ,

vm_prog
()

RSS подписка на новые темы