Prologue

When I got tired of using the disilluminating black-and-white WeChat on the e-ink display, I decided to migrate to another device. The other device, must be not a smartphone, because smartphones tend to draw people ‘s attention. In other words they might not do other things as well as they use WeChat, which is what I want to prevent.

Therefore I came to the decision that I may use an emulator to do so. Anyone maintaining the WeChat regulations, if you see this and believe that this is not a good idea, please contact me immediately instead of banning my account. Using an emulator to carry the chat application along the way.

There are some emulators on the market, however. Some are official, yet incredibly slow, such as (and only) Google’ s AOSP emulator, which may cost you about half an hour to boot, if your computer is fast, owning a 1000% performance advantage over my computer, which did not boot within 5 hours before my closing the emulator. Others are certainly unofficial, but often bores great speed and reliability.

If you want to read more about how I installed and migrated the WeChat application, please read the article for details. Any damage caused by the derivative actions from this article are not held liable by the author.

Initial Installation

Some time during the past I used to use BlueStacks. It is a nice project, though. But it does not satisfy my favour. I was a complete fan of reducing overall program processes, and became steadily furious of BlueStack ‘s implementation. My friend, @xmcp, introduced to me Nox, which I had already known by the time he told me that. In his words, that emulator lacked a sufficiency of processes, which is in fact good news to me, and I doubt any would consider this a bad news. He also stated that in most cases it tended to crash less often, which is a great thing in terms of reliability. Other advantages includes higher performance and better user interface. File sharing and other common yet useful features are also featured in Nox. Yes, it had been proven that all abovementioned are without at all a bit of falsification.

So I installed Nox. Yet it had a problem: it’ s network was composed of NAT instead of directly bridging. You may not see the problem in this, but this is indeed the catalyst of a series of problems.

Nox has a dummy installation, which means you don ‘t have to do anything (not literally nothing, no). So you could just sit back and enjoy the 3 minutes of progress bar crawling towards the end.

Direct Attempt

One way to copy data from the ebook to the emulator is through direct copies. After archiving the folder /mnt/sdcard/tencent/MicroMsg, one may find out that there are no datum connected either directly or indirectly with chat logs. So, though unbelievable, the chat logs are stored in /data/data/com.tencent.mm/MicroMsg.

Thus we may not copy them, not indirectly. I tried to connect the two devices, with a sheer two hours, trying to get the QR codes working. You may not notice that there are two major problems associating with WeChat’ s abuse of QR codes on the source and target devices:

  1. The EBook does not have a camera (Which means it would not accept QR codes as an input, not directly)
  2. The emulator does not support a virtual camera (up to now).
  3. My laptop does not have a webcam.

One of the solutions is to simulate a camera, using the application VCam, which I strongly disapprove of in terms of using with Nox, as there are to be strange dithering and stretching of the scene. The other is more reliable, but also very slow and inefficient as well. You scan the QR codes through images, or send the images and scan the QR codes in the sent images.

C:\Programs\MiPhone\Google\Android>adb shell
root@mione_plus:/ # tar --help
tar --help
BusyBox v1.22.1 bionic (2014-06-22 23:11 +0200) multi-call binary.

Usage: tar -[cxtzJjahmpvO] [-X FILE] [-T FILE] [-f TARFILE] [-C DIR] [FILE]...

Create, extract, or list files from a tar file

Operation:
        c       Create
        x       Extract
        t       List
        f       Name of TARFILE ('-' for stdin/out)
        C       Change to DIR before operation
        v       Verbose
        z       (De)compress using gzip
        J       (De)compress using xz
        j       (De)compress using bzip2
        a       (De)compress using lzma
        O       Extract to stdout
        h       Follow symlinks
        m       Don''t restore mtime
        exclude File to exclude
        X       File with names to exclude
        T       File with names to include
        p       Store SELinux contexts

1|root@mione_plus:/ # mount
mount
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
none /sys/fs/cgroup tmpfs rw,relatime,mode=750,gid=1000 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/fuse tmpfs rw,relatime,mode=775,gid=1000 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,relatime,user_xattr,acl,barrier=1,data=ordered 0 0
/dev/block/platform/msm_sdcc.1/by-name/userdata /data ext4 rw,nosuid,nodev,relatime,user_xattr,acl,barrier=1,noauto_da_alloc 0 0
/dev/block/mmcblk0p1 /firmware vfat ro,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=cp437,iocharset=iso8859-1,shortname=lower,errors=remount-ro 0 0
tmpfs /tmp tmpfs rw,relatime,size=32768k 0 0
/dev/block/vold/179:33 /mnt/media_rw/sdcard0 vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1023,gid=1023,fmask=0007,dmask=0007,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
/dev/block/vold/179:33 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1023,gid=1023,fmask=0007,dmask=0007,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
/dev/fuse /storage/sdcard0 fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
root@mione_plus:/ # ^C
C:\Programs\MiPhone\Google\Android>adb reboot

C:\Programs\MiPhone\Google\Android>adb shell
~ # cd /data
cd /data
/data # cd data
cd data
/data/data # cd com.tencent.mm
cd com.tencent.mm
/data/data/com.tencent.mm # ls
ls
MicroMsg          app_recover_lib   cache             lib
app_cache         app_tbs           databases         shared_prefs
app_dex           app_webview       dex.lock
app_lib           app_webviewcache  files
/data/data/com.tencent.mm # tar c MicroMsg -f mm.tar
tar c MicroMsg -f mm.tar
/data/data/com.tencent.mm # ^D

C:\Programs\MiPhone\Google\Android>adb pull /data/data/com.tencent.mm/mm.tar D:/mm.tar
3871 KB/s (11926016 bytes in 3.008s)

C:\Programs\MiPhone\Google\Android>adb shell
~ # cd /sdcard
cd /sdcard
/sdcard # cd tencent
cd tencent
/sdcard/tencent # tar c MicroMsg -f mm.tar
tar c MicroMsg -f mm.tar
/sdcard/tencent # ls -al
ls -al
drwxrwxrwx    4 root     root          4096 Nov 10 17:35 .
drwxrwxrwx   15 root     root          4096 Jan  1  1970 ..
drwxrwxrwx   19 root     root          4096 Nov 10  2016 MicroMsg
-rwxrwxrwx    1 root     root      52958720 Nov 10 17:36 mm.tar
drwxrwxrwx    2 root     root          4096 Nov 10  2016 mta
/sdcard/tencent # ^D

C:\Programs\MiPhone\Google\Android>adb pull /sdcard/tencent/mm.tar D:/res.tar
3983 KB/s (52958720 bytes in 12.981s)

C:\Programs\MiPhone\Google\Android>

Yes. This is supposed to work right, but hitherto the network addresses came to bother me. So we are going to download a set of Github Ppages.

I am giving the fact quite clear: There is not fast way to change the network mode from NAT to bridging. So the two devices will and will always (The computer, the phones, the ebooks as direct children of the wireless router; between the emulator running on the computer) be separated in different networks.

It will simply throw you a warning / error that it is not something possible, or simply they decided not to implement log migration between different devices.

Migrating While Evolving

I simply used 10 minutes to tell people that this is right.

No matter what you use, if you use then there are bugs.

It took me around two and a half hours to transfer my chat logs to a XiaoMi 1S, the one which I bricked and unbricked at least two weeks ago. Once of these operations (migration) ended up in 99% and connection broke down amidst the final packets.

So when doing something uninterruptable, try solving it in sections.

Thereafter the datum had moved from the EBook without camera to a temporary smartphone with cameras.

However, this method costs time. Because of the speed of the network and the quality of the connection, the time complexity varies accordingly. The average speed, tested by myself, appears to be around 50kb/s at a low rate.

Copying Data

I ‘ve tried almost every combination and method, including Tencent’ s PC Manager, which is quite a nuisance, and can contribute no help, if not less than zero, to the migration process.

The only last method is directly copying data from the smartphone and copy them into the emulator. Surprisingly, this had escaped SIGSEGV and worked.

Conclusion

WeChat is something hard to use that is defective by design. The complex logics between users and usergroups, e. t. c., are indeed very irritating.

But if you want to try much, there is a small probability that you may eradicate its artificial limits and override with your own creativity. The thing I am doing is purely random and only managed to do so with sheer luck.

Anyway, evolving from B&W to RGB is indeed a great improvement.