您好,登錄后才能下訂單哦!
這一次,小程演示怎么讓一個APP自動地運行,從而代替手工的操作。同樣以“微信”以例,實現在一個微信群里面,對所有的成員,自動地一個一個地發出添加好友的請求。
知識點還是之前介紹的東西,流程方面還是跟蹤與最終注入。因為這是一個系列的文章講解(微信公眾號“廣州小程” -> 逆向開發),所以讀者可以聯系前面的文章來理解,用自己的話“翻譯”成自己的知識與經驗。
本文解決一個問題:如何讓第三方程序自動化地運行。
(一)批量添加好友的效果
小程使用“奇哥”的賬號,在某個群里面向所有人請求加好友,程序運行的效果是這樣的:
同樣,如果是附近的人,也可以做到自動批量地發出請求:
需要解釋一下,這種批量加好友的行為是被微信限制的,并且會對違規者作出處罰。那加人的限制是怎么樣的?小程在網上找了一個說法,讀者可以了解一下:
2017+微信加人限制規則:
微信群:最多每天30~50個,保險是20人,超過對方收不到驗證信息。
附近的人:15個每次,每天最多3次,每次之間最少間隔×分鐘;
搖一搖:15個每次,每天最多3次,每次之間最少間隔×分鐘;
搜索微信號:6個每次,每天最多5次,每次之間最少間隔×分鐘;
手機通訊錄:8個每次,每天最多6次,每次之間最少間隔×分鐘;
漂流瓶:5個每次,每天最多3次,每次之間最少間隔×分鐘;
主動加好友:每天每個微信號,最多30個;
被動加好友:每天每個微信號,最多180個。
如果被限制了,會有什么表現呢?首先,不會有特別的通知告訴你,但你發送的請求不會去到別人那里(如果是在“附近的人”,那就是你可以看到別人,而別人看不到你;你打呼,別人不會收到。),而且,需要過一個星期或更長時間,才能正常“交流”。
所以,應該慎用批量加好友的功能。
小程在這里只是演示“如何自動化”,目的并非加好友。
(二)如何實現
先是跟蹤目標函數。
(1)群成員列表的界面類是什么?
由此可見,ChatRoomInfoViewController
是一個目標,它的結構是這樣的:
注意m_arrMemberList這個變量,它就是所有群成員的數組,每一個成員是一個CContact。
(2)點擊每一個群成員
點擊一個成員,就是調用- (void)openContactInfo:(id)arg1
這個函數,傳入的就是成員。
可以想像,只要循環調用這個函數,并傳入不同的成員,就可以達到批量點擊成員的目的。
(3)觸發添加成員
點擊成員后,進到“成員詳細資料”頁面,這個頁面所在類是這樣的:
再作一些猜測與跟蹤,就可以知道,點擊“添加到通訊錄”,觸發的函數是
ContactInfoViewController::onSendVerifyMsg。
(4)發送請求
到了這一步,就是填寫打招呼的內容了。一個好的招呼應該是帶上對方昵稱的,而這個昵稱可以從成員信息中取得。如果微信的UITextField有長度限制(有些版本作了限制)的話,還可以重寫文本框的回調以取消限制。
發送請求的類:
(三)總結
小程在這里給出一個批量自動化的思路:
手動進到群成員列表,然后進入自動化流程。
在ChatRoomInfoViewController::viewDidLoad完成時,取得m_arrMemberList即成員列表,循環打開每個成員。
使用CContact::isMyContact,判斷成員是否已經添加過了,如果是則下一個成員。
每點擊一個成員時,設置一個變量的狀態,然后進入等待,直到這個變量的狀態變化,再進入下一個成員的點擊。
點擊成員,進入到“詳細資料”界面,同時,UINavigationController進入等待若干秒(比如4秒),若干秒后執行返回操作(不管最終是否添加成功)。
進入驗證界面,在SendVerifyMsgViewController::viewDidLoad時,設置好UITextField的內容,再觸發onSendVerifyMsg的調用。
驗證如果成功,則驗證界面會自動消失,如果失敗(失敗有回調)則需要主動調用一下成功時的調用使得驗證界面消失。這時即使有alertview彈框也不影響后續的操作。
UINavigationController執行返回操作,并設置可以下一個成員。
ChatRoomInfoViewController執行下一個成員。
總結
以上所述是小編給大家介紹的iOS逆向開發之微信自動添加好友功能,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。