Показать сообщение отдельно
Старый 15.09.2015, 17:36   #13
nobody
 
Аватар для nobody
 
Регистрация: 05.07.2010
Сообщений: 176
Репутация: 130
По умолчанию

UPD 24/09/2015: В последнем стабильном фф 41.0-1 опять поменяли escapeChars[], кстати, теперь по дефолту одинарная кавычка не енкодится. Меня откровенно задолбало то что они там меняют, поэтому вот. Проверял - работает и в старых, и в новых версиях libxul, и в firefox и в iceweasel. И по идее, работать будет всегда. Аттачи удаляю, за ненадобностью.


В Firefox >= 40.0.? патчи работать не будут. Мой (8 пост) вообще, а патч SynQ (1 пост) не пофиксит одинарную кавычку, но двойную и обратную кавычку может. Связано это с очередным изменением в EscapeChars[] (mozilla-release/xpcom/io/nsEscape.cpp)

Код:
% tar -xJf ./firefox-40.0.3-1-x86_64.pkg.tar.xz usr/lib/firefox/libxul.so --strip-components=3
% ls
firefox-40.0.3-1-x86_64.pkg.tar.xz  libxul.so  make_ff_sexy.c  xul.py
% ./xul.py ./libxul.so single_quote
Found magic sequence at offset 51510624
Error at sequence patching
% python2.7 -c 'print hex(51510624-0x10)'
0x311fd50
% xxd -seek 0x311fd50 ./libxul.so|head -1
0311fd50: ff03 0000 0000 0000 ff03 0000 7000 0000  ............p...
Патч для патча ( )SynQ:
Код:
--- ./xul.py.orig       2015-09-15 17:27:21.498302251 +0000
+++ xul.py      2015-09-15 17:27:21.498302251 +0000
@@ -17,5 +17,5 @@
     if byte == enc:
-        f.write(no_enc)
+        f.write(no_enc[0])
         print 'This quote have been sent encoded (original behavior), now changed to have no encoding'
-    elif byte == no_enc:
+    elif byte in no_enc:
         print 'This quote have been sent unencoded (patched behavior), reverted it back to original behavior'
@@ -28,3 +28,3 @@
 enc = '\x00\x00\x00\x00'
-no_enc = '\xFF\x03\x00\x00'
+no_enc = ['\xFF\x03\x00\x00', '\x70\x00\x00\x00']
 single_quote = -1 * 4
Патч для моего патча:
Код:
--- ./make_ff_sexy.c.orig       2015-09-15 17:31:21.791624535 +0000
+++ make_ff_sexy.c      2015-09-15 17:31:33.671623988 +0000
@@ -5,2 +5,4 @@
  *  10.0     Windows XP 32 bit $compiled by Tiny C Compiler
+ *
+ *  UPD 02/09/15: Firefox 40.0.3-1 changed libxul sequence
  *  
@@ -20,3 +22,4 @@
 
-unsigned char sequence[] = "\xff\x03\x00\x00\x00\x00\x00\x00\xff\x03\x00\x00\x00\x00\x00\x00";
+unsigned char sequence[] = "\xff\x03\x00\x00\x00\x00\x00\x00\xff\x03\x00\x00\x70\x00\x00\x00";
+//unsigned char sequence[] = "\xff\x03\x00\x00\x00\x00\x00\x00\xff\x03\x00\x00\x00\x00\x00\x00"; //old one (firefox <= 40)
 //unsigned char psequence[] = "\xff\x03\x00\x00\x00\x00\x00\x00\xff\x03\x00\x00\xff\x03\x00\x00";
P.S. я знаю что все леньтяи, так что всё готовое в аттачах.
__________________
Sad panda

Последний раз редактировалось nobody; 25.09.2015 в 00:43..
nobody вне форума   Ответить с цитированием