cari
RumahJavajavaTutorialBagaimana untuk menggunakan Java untuk membuka berbilang akaun pada WeChat PC?

Anda juga boleh membuka berbilang akaun WeChat pada komputer

Semalam, saya secara tidak sengaja mengetahui daripada rakan baik saya Xiao Lin (akaun awam WeChat: Xiao Lin Coding) bahawa komputernya sebenarnya boleh membuka dua WeChat ID pada masa yang sama.

Buka WeChat pada telefon mudah alih Saya tahu bahawa sistem telefon mudah alih seperti Huawei dan Xiaomi menyokong ini, tetapi bagaimana untuk memulakan dua WeChat pada komputer yang menjalankan sistem Windows Ini benar-benar menimbulkan rasa ingin tahu saya.

Xiao Lin memberitahu saya bahawa dia melakukan ini dan menulis proses kelompok:

<code>start D:\WeChat\WeChat.exe<br>start D:\WeChat\WeChat.exe</code> 

Kemudian dia terus mengklik dua kali fail kelompok untuk memulakan dua proses WeChat.

Saya mencubanya, dan pasti ia berkesan!

Kemudian saya menambah baris lain, dan saya dapat mengaktifkan 3 lagi:

Bagaimana untuk menggunakan Java untuk membuka berbilang akaun pada WeChat PC?

Kemudian saya mencari di Internet dan mendapati bahawa helah ini telah digunakan oleh orang lain sejak dahulu lagi. Tetapi mengapa anda boleh membuka lebih banyak pintu dengan cara ini saya benar-benar ingin tahu misterinya.

TIPS: Jika anda tidak berminat dengan bahagian analisis teknikal, anda boleh langkau dan pergi terus ke bahagian kebenaran di penghujung.

Mod tunggal WeChat

Dalam keadaan biasa, anda boleh terus klik dua kali pada ikon WeChat untuk memulakan proses yang dimulakan kemudian akan melakukan semakan mod tunggal global Jika didapati bahawa WeChat proses sudah wujud, ia akan terus Mengaktifkan tetingkap WeChat proses yang sepadan, meletakkannya di hadapan desktop, dan kemudian keluar sendiri.

Tetapi kenapa ia boleh diaktifkan menggunakan kaedah di atas? Mari kita ketahui.

Mula-mula, mari kita analisa cara satu contoh WeChat yang diterangkan di atas dilaksanakan.

Rakan yang telah membuat pembangunan aplikasi platform Windows mungkin biasa dengan ini, mutex dengan nama unik secara global dibuat selepas proses dimulakan, ia akan bermula seperti biasa penciptaan gagal, ia akan dinilai sama ada mutex adalah sama. repeller sudah wujud. Sekiranya ia sudah wujud, bermakna program yang berkaitan telah dimulakan sebelum ini.

Dengan tekaan ini, gunakan alat procexp untuk menyemak semua objek kernel yang dibuka oleh proses WeChat dan mencari bahagian mutex:

Bagaimana untuk menggunakan Java untuk membuka berbilang akaun pada WeChat PC?

Sudah pasti, terdapat mutex bernama _WeChat_App_Instance_Identity_Mutex_Name Daripada nama ini, kita boleh mengagak bahawa ini pasti berkaitan dengan mod tunggal WeChat.

Seterusnya, mulakan APIMonitor artifak, yang boleh membantu anda memantau panggilan API bagi proses yang ditentukan. Semak dua fungsi API Windows CreateMutex dan GetLastError. Apabila WeChat sudah berjalan, gunakan alat ini untuk memulakan proses WeChat yang lain dan lihat pada panggilan fungsi:

Bagaimana untuk menggunakan Java untuk membuka berbilang akaun pada WeChat PC?

Seperti yang anda lihat, selepas mencipta mutex dengan nama ini, fungsi GetLastError kemudiannya dipanggil dan 0x000000b7 telah dikembalikan, maksudnya:

Bagaimana untuk menggunakan Java untuk membuka berbilang akaun pada WeChat PC?

bermaksud ia sudah wujud.

Mari kita lihat susunan panggilan CreateMutex ini dan lihat di mana kod mencipta mutex global ini:

Bagaimana untuk menggunakan Java untuk membuka berbilang akaun pada WeChat PC?

Daripada timbunan, dapat dilihat bahawa panggilan itu datang daripada perpustakaan dinamik WeChatWin.dll dalam direktori WeChat. Kedudukan khusus ialah arahan sebelumnya pada offset 0x8e271b.

Langkah seterusnya ialah memperkenalkan artifak di kalangan artifak, perisian pembongkaran terkenal IDA Lelaki ini menyokong x86, x64, ARM, MIPS dan seni bina pemproses lain serta Windows, Linux, Android, MacOS, Program JVM. analisis pada pelbagai platform sistem.

Buka fail WeChatWin.dll dengan IDA dan cari di offset 0x8e271b:

Bagaimana untuk menggunakan Java untuk membuka berbilang akaun pada WeChat PC?

Seperti yang ditunjukkan dalam rajah di atas, tindakan mencipta mutex, Berlaku dalam fungsi sub_108e26d0.

Lapisan atas ialah fungsi sub_108e2660 yang memanggilnya:

Bagaimana untuk menggunakan Java untuk membuka berbilang akaun pada WeChat PC?

Gambar di atas mencerminkan logik penghakiman selepas mencipta mutex:

  • Jika nilai pulangan sub_108e26d0 ialah 0, ia bermakna tiada ralat dan fungsi semasa akan kembali terus 0.

  • 如果sub_108e26d0的返回值不为0,表示出现了错误,则依次判断     WeChatMainWndForPC和     WeChatLoginWndForPC两个窗口是否存在,如果存在则使用     BringWindowToTop函数将其置顶弹出。这两个窗口分别代表的是微信的主界面窗口和登陆界面窗口,如果一个微信实例已经存在,则势必处于这两种状态之一。

问题就出在上面这个判断中,汇编代码看起来有点辣眼睛,咱们F5来还原一下C代码(还原效果只能凑合看,能看清楚逻辑就行):

Bagaimana untuk menggunakan Java untuk membuka berbilang akaun pada WeChat PC?  

上面图片的注解已经说明了,函数sub_108e2660的返回值将决定是否启动微信实例进程,还是直接退出。 

真相只有一个

事情到这里就真相大白了,来总结一下。

微信判断是否启动的2个条件:

  • 如果能成功创建互斥体对象,则启动微信

  • 如果不能创建互斥体:

    • 如果找到对应窗口,则置顶之,自己退出

    • 如果没有找到,则启动微信

用伪代码来表示一下:

<code>if (CreateMutex() == SUCCESS) {<br>  启动微信<br>} else {<br>  if (FindWindow() == SUCCESS) {<br>    将已有窗口置顶<br>  } else {<br>    启动微信<br>  }<br>}</code> 

而直接使用脚本启动的多个进程,虽然操作系统内核层面保证了互斥体的唯一,但由于启动速度相差不大,相应的窗口还没有来得及创建出来,导致走入上面的第二个启动逻辑,从而可以启动多个实例。 

小发现

在分析的过程中,发现了一个有趣的事情:

在WeChatWin.dll中,上面的创建互斥体再上一级函数名字叫StartWaChat,也是作为导出函数被该DLL导出:

Bagaimana untuk menggunakan Java untuk membuka berbilang akaun pada WeChat PC?

Atas ialah kandungan terperinci Bagaimana untuk menggunakan Java untuk membuka berbilang akaun pada WeChat PC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Artikel ini dikembalikan pada:亿速云. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Bagaimanakah subsistem loader kelas dalam JVM menyumbang kepada kebebasan platform?Bagaimanakah subsistem loader kelas dalam JVM menyumbang kepada kebebasan platform?Apr 23, 2025 am 12:14 AM

Loader kelas memastikan konsistensi dan keserasian program Java pada platform yang berbeza melalui format fail kelas bersatu, pemuatan dinamik, model delegasi induk dan bytecode bebas platform, dan mencapai kemerdekaan platform.

Adakah pengkompil Java menghasilkan kod khusus platform? Menjelaskan.Adakah pengkompil Java menghasilkan kod khusus platform? Menjelaskan.Apr 23, 2025 am 12:09 AM

Kod yang dihasilkan oleh pengkompil Java adalah platform bebas, tetapi kod yang akhirnya dilaksanakan adalah platform khusus. 1. Kod sumber Java disusun ke dalam bytecode bebas platform. 2. JVM menukar bytecode ke dalam kod mesin untuk platform tertentu, memastikan operasi silang platform tetapi prestasi mungkin berbeza.

Bagaimanakah JVM mengendalikan multithreading pada sistem operasi yang berbeza?Bagaimanakah JVM mengendalikan multithreading pada sistem operasi yang berbeza?Apr 23, 2025 am 12:07 AM

Multithreading adalah penting dalam pengaturcaraan moden kerana ia dapat meningkatkan respons program dan penggunaan sumber dan mengendalikan tugas serentak yang kompleks. JVM memastikan konsistensi dan kecekapan multithreads pada sistem operasi yang berbeza melalui pemetaan benang, mekanisme penjadualan dan mekanisme kunci penyegerakan.

Apakah maksud 'kemerdekaan platform' dalam konteks Java?Apakah maksud 'kemerdekaan platform' dalam konteks Java?Apr 23, 2025 am 12:05 AM

Kemerdekaan platform Java bermaksud bahawa kod yang ditulis boleh dijalankan di mana -mana platform dengan JVM dipasang tanpa pengubahsuaian. 1) Kod sumber Java dikumpulkan ke dalam bytecode, 2) bytecode ditafsirkan dan dilaksanakan oleh JVM, 3) JVM menyediakan fungsi pengurusan memori dan pengumpulan sampah untuk memastikan program berjalan pada sistem operasi yang berbeza.

Bolehkah aplikasi Java masih menghadapi pepijat atau isu khusus platform?Bolehkah aplikasi Java masih menghadapi pepijat atau isu khusus platform?Apr 23, 2025 am 12:03 AM

JavaapplicationscanIndeedencounterplatform-specificissuesdespitethejvm'sabstraction.reasonsinclude: 1) nativecodeandlibraries, 2) operatingsystemdifferences, 3) jvmimplementationsvariations

Bagaimanakah pengkomputeran awan mempengaruhi kepentingan kemerdekaan platform Java?Bagaimanakah pengkomputeran awan mempengaruhi kepentingan kemerdekaan platform Java?Apr 22, 2025 pm 07:05 PM

Pengkomputeran awan dengan ketara meningkatkan kemerdekaan platform Java. 1) Kod Java dikumpulkan ke dalam bytecode dan dilaksanakan oleh JVM pada sistem operasi yang berbeza untuk memastikan operasi silang platform. 2) Gunakan Docker dan Kubernet untuk menggunakan aplikasi Java untuk meningkatkan kebolehgunaan dan skalabiliti.

Apakah peranan yang dimainkan oleh kemerdekaan platform Java dalam penggunaannya yang meluas?Apakah peranan yang dimainkan oleh kemerdekaan platform Java dalam penggunaannya yang meluas?Apr 22, 2025 pm 06:53 PM

Java'splatformindependenceallowsdeveloperstowritecodeonceandrunitonanydeviceorOSwithaJVM.Thisisachievedthroughcompilingtobytecode,whichtheJVMinterpretsorcompilesatruntime.ThisfeaturehassignificantlyboostedJava'sadoptionduetocross-platformdeployment,s

Bagaimanakah teknologi kontena (seperti Docker) mempengaruhi kepentingan kemerdekaan platform Java?Bagaimanakah teknologi kontena (seperti Docker) mempengaruhi kepentingan kemerdekaan platform Java?Apr 22, 2025 pm 06:49 PM

Teknologi kontena seperti Docker meningkatkan daripada menggantikan kemerdekaan platform Java. 1) Memastikan konsistensi di seluruh persekitaran, 2) Menguruskan kebergantungan, termasuk versi JVM tertentu, 3) memudahkan proses penempatan untuk menjadikan aplikasi Java lebih mudah disesuaikan dan boleh diurus.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

PhpStorm versi Mac

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)