GithubHelp home page GithubHelp logo

article's Introduction

WeMobileDev Articles

Articles in mp.weixin.qq.com, you can scan the following qrcode to follow us!

qrcode_for_wemobiledev.jpg

article's People

Contributors

garryyan avatar john-he-928 avatar kirozhao avatar ragnraok avatar rbbtsn0w avatar ringod avatar shwenzhang avatar spacewander avatar tys282000 avatar yexuan910812 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

article's Issues

tcp mss问题请教

Hi, 首先对mars项目致敬,阅读了一部分源码,发现其对移动网络确实做了许多优化。�
这篇文章中提到:印象比较深刻的某地的用户反馈连接 WiFi 时,微信不可用,后来 tcpdump 发现,当包的大小超过一定大小后就发不出去。解决方案:在 WiFi 网络下强制把 MSS 改为1400(代码见 unix_socket.cc)。
我们遇到的问题与你在文章中提到的类似,也是请求长度超过mss后,在用户的wifi环境下出现拆包后,请求失败。据我们分析,不一定是与运营商有关系,而是跟路由器组网方式、路由器MTU设置有一定关系。
另外想问一下,据了解mss是最终由服务端与客户端协商定下的,为什么不通过服务端降低mss,来最终减小mss值,而是直接在客户端设置更小的mss?

请教《ART下的方法内联策略及其对Android热修复方案的影响分析》中的关于判断新旧DexCache的问题

最近我的Android N手机上京东App偶现crash,通过log发现京东App使用了tinker热修复方案,这个crash和
ART下的方法内联策略及其对Android热修复方案的影响分析中描述的第二种crash相似:

oldDex里的typeid >= newDex的DexCache的长度 被SIGABORT干掉,Abort Message为数组下标越界

但是我对判断新旧DexCache时存在一些疑惑,已知条件:

f.sC内联了h.getExternalStorageDirectory
(12288+1292)/4 = 3395,对应compatible.util.h的typeid
(12288+1120) / 4 = 3352,对应compatible.d.p的typeid

按照我对文章的理解,因为3395对应的类为null或者没有初始化,然后跳转到0x036e40ea这个地方去执行,按照类的加载流程加载了新的类,并且形成了新的DexCache,继而3352作为索引的DexCache是新的DexCache。但是由于内联的原因,3352这个索引对应的是旧的DexCache,因此会出现问题。

我的疑惑就在于这一系列动作的触发条件,那就是只有3395对应的类为null或者没有初始化才会跳转去执行后面的流程。3395对应的是旧的DexCache,按照我的理解,它应该既不为NULL也应该初始化了才对,非常的不理解这点,盼望解答一下。

1480595723104

请教:针对闹钟对齐使用了什么策略?

你好,我在这边文章微信终端跨平台组件 Mars 系列 - 我们如约而至中有如下叙述:

平台特性优化。虽然 Mars 是跨平台的基础组件,但在很多设计上是需要结合各平台的特性的。例如为了尽量减少频繁的唤醒手机,引入了智能心跳,并且在智能心跳中考虑了 Android 的 alarm 对齐特性(具体实现见smart_heartbeat.cc)。再如在网络切换时,为了平滑切换的过程,使用了 iOS 中网络的特性,在 iOS 中做了延迟处理等。

smart_heartbeat.cc

没能明白其中的玄机,还请赐教指点。

关于热修复art插桩会导致寻址错误

首先感谢微信团队的付出. 关于热修复一文中提到的art插桩会导致寻址错误的问题, 文中解释的不是很清楚, 我用手Q的热修复方法测试了art多个机型, 修改方法名修改变量名都正常修复并且没有引起其它问题.

abc

请教下Android N混合编译生成的base.art中的类在运行时最终添加到哪个classloader的问题

您在Android N混合编译与对热补丁影响深度解析一文提到,为了规避混合编译带来的影响,采用运行时替换PathClassLoader方案,因为App image中的class是插入到PathClassloader中的ClassTable中。

但是最近我们测试这个方案没有成功(程序刚开始运行正常,等过了两三天生成base.art之后就开始报错)
而且从下列代码上看 这些class好像时直接放到了bootclassloader的table里

class_linker.cc#1048

// Boot class loader, use a null handle.
    std::vector<std::unique_ptr<const DexFile>> dex_files;
    if (!AddImageSpace(image_space,
                       ScopedNullHandle<mirror::ClassLoader>(),
                       /*dex_elements*/nullptr,
                       /*dex_location*/nullptr,
                       /*out*/&dex_files,
                       error_msg)) {
      return false;
    }

class_linker.cc#5069

  if (class_loader == nullptr) {
    return &boot_class_table_;
  }

不知道我们哪里出错了?

请教下mmtls中关于公钥交换方式的问题

注意到,由于签名算法中的公钥ECDSA_verify_key是一直公开的,攻击者没有办法阻止别人获取公钥,除非完全掐断发送方的通信。这样一来,中间人攻击就不存在了,因为Eve无法伪造签名。

这里没看懂,既然ECDSA的公钥是公开的,那么理论上中间人也可以拦截ECDSA的签名和公钥内容,然后再伪造

这里没看明白,请教下诸位!

基于TLS1.3的微信安全通信协议mmtls

1.请问下mmtls协议中会涉及到一些密码学的运算,比如签名验签算法中的大数运算,我想问下你们用到的密码库是自己实现的还是用的第三方开源的,如OpenSSL?

2.关于mmtls安全通信协议代码实现层面,腾讯有无开源的打算?

Tinker如何兼容Multidex

您好, 现在很多app早已超过了65535的方法数限制, 请问微信tinker增量dex的方案如何兼容multidex? 谢谢回答.

QQ浏览器在某些Android 7.0机型上爆出Tinker异常

行为:QQ浏览器7.3.1.3060版本打开百度首页会百分百出现卡顿。看起来像某些patch通过Tinker更新失败进而导致问题产生的。
Log 日志:
03-21 00:58:29.483 28710 28710 W LoadedApk: mResDir: /data/app/com.tencent.mtt-1/base.apk
03-21 00:58:29.483 28710 28710 W LoadedApk: myResfileName: /data/dalvik-cache/arm/data@[email protected]@[email protected]
03-21 00:58:29.483 28710 28710 W LoadedApk: myResfileName: /data/dalvik-cache/arm/data@[email protected]@[email protected] is not exist
03-21 00:58:29.483 28710 28710 W LoadedApk: mResDir: /data/app/com.tencent.mtt-1/base.apk is bigger than 20M. We will pop the text.
03-21 00:58:29.528 31764 1518 V PackageManager: getPackageInfo com.tencent.mtt: Package{5a97724 com.tencent.mtt}
03-21 00:58:29.546 28710 28710 W Tinker.TinkerLoader: tryLoadPatchFiles:patch dir not exist:/data/user/0/com.tencent.mtt/tinker
03-21 00:58:29.555 31764 1083 V PackageManager: getApplicationInfo com.tencent.mtt: Package{5a97724 com.tencent.mtt}
03-21 00:58:29.618 28710 28710 D QBTinkerManager: processName=com.tencent.mtt
03-21 00:58:29.618 28710 28710 D QBTinkerManager: processName=com.tencent.mtt
03-21 00:58:29.624 31764 1495 V PackageManager: getServiceInfo ComponentInfo{com.tencent.mtt/com.tencent.tinker.lib.service.TinkerPatchService}: Service{488d34b com.tencent.mtt/com.tencent.tinker.lib.service.TinkerPatchService}
03-21 00:58:29.626 28710 28710 W Tinker.Tinker: tinker patch directory: /data/user/0/com.tencent.mtt/tinker
03-21 00:58:29.629 28710 28710 I Tinker.DefaultLoadReporter: patch load result, path:/data/user/0/com.tencent.mtt/tinker, code:-2, cost:8

最新的Mac10.12系统的NAT64热点问题

iphone手机连接Mac系统10.12之前的版本 NAT64热点,用getaddrinfo转换出来的v6 IP 是带了NAT64/DNS64 64:ff9b::/96前缀,但最新的10.12用这个函数转换的ip前缀是2001::的,你不是说这个是隧道通道的么,而且这个前缀好像除了2001固定,后面的都不固定吧,这种情况要如何处理?

关于Android MediaCodec硬编码16位对齐的问题

前段时间我也遇到这个问题了,参考:https://stackoverflow.com/questions/28291204/something-about-stagefright-codec-input-format-in-android 解决了。

但现在遇到一个新问题:视频能正常编码出来,但是部分手机在视频右侧或底部出现一条绿纹,应该就是对齐增加的几个像素导致,不知道如何解决。

不知道是不是对齐的方式有问题,我的方式:
if (w % 16 > 0) {
w = (w / 16) * 16 + 16;
}
if (h % 16 > 0) {
h = (h / 16) * 16 + 16;
}

有遇到相同的情况吗?

【疑问】微信iOS SQLite源码优化实践

"我们知道,iOS app是单进程的,并没有多进程并发的需求,这和SQLite的设计初衷是不相同的。这就给我们的优化提供了理论上的基础"
对于单个app来说是单进程的, 但是如果有apple watch app作为extension,共享sqlite3 db,理论上来说算是2 process,不知道wechat在watch app是怎么做这块地方的呢

关于ECDSA防止中间人的问题

注意到,由于签名算法中的公钥ECDSA_verify_key是一直公开的,攻击者没有办法阻止别人获取公钥,除非完全掐断发送方的通信。这样一来,中间人攻击就不存在了,因为Eve无法伪造签名。具体过程如图5所示:
image


关于这一点不是很理解——中间人(Eve)仍然可以:

  1. 拦截客户端的请求后,通过自己生成一对sign_key和verify_key
  2. 篡改Bob_ECDH_pub_key之后,将中间人自己生成的signature_eve、eve_verify_key 和 eve_ECDH_pub_key,发给服务端
  3. 同理对客户端。

不知道我的理解中哪个部分是有问题的部分呢?

还是说,原本微信的sign_key和verify_key其实是根据static_svr_pub_key生成的,所以中间人在不破解客户端代码的情况下,生成的sign_key和verify_key无法通过微信后端校验?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.