對(duì)企業(yè)微信的一次簡(jiǎn)單的逆向過(guò)程

目的 學(xué)習(xí)一下反編譯 就企業(yè)微信2.7.0做實(shí)驗(yàn)對(duì)象 如有侵犯之處 及時(shí)通知 好刪掉相關(guān)資料

image.png

image.png

jar合并包口令:jar -cvf name.jar .

查看當(dāng)前activity windows上adb 命令 adb shell dumpsys activity | findstr  "mFocus"

聊天界面是:
com.tencent.wework.msg.controller.MessageListActivity

整個(gè)最外層 RelativeLayout
name 16進(jìn)制
ab 0x7f110024
右邊紅包部分 層數(shù)從最外層開(kāi)始
cn0 0x7f1111fc
cn2 0x7f1111fe

b2q.png

"開(kāi)" 圖片資源為b2q

打開(kāi)紅包界面為:
com.tencent.wework.enterprise.redenvelopes.controller.RedEnvelopeCollectorActivity

方法為:

//查詢(xún)
   public static void a(RedEnvelopesQueryDetailResult redEnvelopesQueryDetailResult, long j, long j2) {
        if (redEnvelopesQueryDetailResult == null || redEnvelopesQueryDetailResult.getInfo() == null) {
            bmc.d("RedEnvelopeCollectorActivity", new Object[]{"openRedEnvelope invalid result"});
            return;
        }
        dpc.a(redEnvelopesQueryDetailResult);
        Intent intent = new Intent(cuk.cgk, RedEnvelopeCollectorActivity.class);
        intent.putExtra("popupAnimation", true);
        intent.putExtra("extra_key_open_result_red_envelope", redEnvelopesQueryDetailResult.getInfo().hongbaoid);
        intent.putExtra("extra_key_red_envelope_conversation_id", j);
        intent.putExtra("extra_key_red_envlope_msg_id", j2);
        intent.putExtra("extra_key_red_open_type", 3);
        intent.addFlags(268435456);
        cuk.ap(intent);
    }
//搶
public static void a(RedEnvelopesGrabHongBaoResult redEnvelopesGrabHongBaoResult, long j, long j2, int i) {
        if (redEnvelopesGrabHongBaoResult == null || redEnvelopesGrabHongBaoResult.getInfo() == null) {
            bmc.d("RedEnvelopeCollectorActivity", new Object[]{"grabRedEnvelope invalid result"});
            return;
        }
        dpc.a(redEnvelopesGrabHongBaoResult);
        Intent intent = new Intent(cuk.cgk, RedEnvelopeCollectorActivity.class);
        intent.putExtra("popupAnimation", true);
        intent.putExtra("extra_key_open_result_red_envelope", redEnvelopesGrabHongBaoResult.getInfo().hongbaoid);
        intent.putExtra("extra_key_red_envelope_conversation_id", j);
        intent.putExtra("extra_key_red_envlope_msg_id", j2);
        intent.putExtra("extra_key_red_open_type", 2);
        intent.putExtra("extra_key_red_envelope_vid_ticket", i);
        intent.addFlags(268435456);
        cuk.ap(intent);
    }

boE() 方法

"開(kāi)"
d8r 0x7f111520 2131825952

 文件在com.tencent.wework.enterprise.redenvelopes.view.RedEnvelopeCollector

fXT

點(diǎn)擊事件:
 case 2131825952:
                if (this.fXN != null) {
                    bqU();
                    this.fXN.onAnimationStart();
                    this.fXT.setClickable(false);
                    return;
                }
                return;

 public void bqU() {
        this.fXN.boH();//setCollectorEventListener
        cpo = ObjectAnimator.ofFloat(this.fXT, "alpha", new float[]{1.0f, 0.0f});
        cpo.setDuration(400).start();
        new Handler().post(new Runnable() {
            public void run() {
                RedEnvelopeCollector.this.bqV();
            }
        });
        this.fYm.postDelayed(this.fYn, 100000);
    }

RedEnvelopeCollectorActivity  fXN.boh調(diào)用

方法找到 在RedEnvelopeCollectorActivity 調(diào)用boB 方法 RedEnvelopesService

protected void boB() {
        this.fSW.removeCallbacks(this.fSX);
        RedEnvelopesService.getService().unWrapHongBao(this.fSw, this.fSx, this.fSV, this);
    }

參數(shù)
    protected void cZ(Context context) {
        this.mContext = context;
        this.fSv = new ctq(this.mContext);
        this.fSv.C(new int[]{2131296550});
        this.bTJ = getIntent().getLongExtra("extra_key_red_envelope_conversation_id", 0);
        long longExtra = getIntent().getLongExtra("extra_key_red_envlope_msg_id", 0);
        this.fSV = getIntent().getIntExtra("extra_key_red_envelope_vid_ticket", 0);
        this.duY = getIntent().getIntExtra("extra_key_red_open_type", 2);
        this.fSw = getIntent().getStringExtra("extra_key_open_result_red_envelope");
        this.bSA = MessageManager.cpc().X(this.bTJ, longExtra);
    }

注釋


public static void a(Context paramContext, int paramInt, RedEnvelopesQueryDetailResult paramRedEnvelopesQueryDetailResult)
  {
    if (paramInt == -1900014) 
    {
      dpc.da(paramContext); // RedEnvelopeDataHelper classdex4里面
      return;
    }
    if ((paramInt == -1900015) && (paramRedEnvelopesQueryDetailResult != null) && (paramRedEnvelopesQueryDetailResult.getInfo() != null) && (!cts.dG(cts.ct(paramRedEnvelopesQueryDetailResult.getInfo().errmsg))))
    {
      dpc.aq(paramContext, cts.ct(paramRedEnvelopesQueryDetailResult.getInfo().errmsg));
      return;
    }
    if (paramInt == -1900005)
    {
      dpc.ap(paramContext, cuk.getString(2131369595)); //微信授權(quán)信息已經(jīng)過(guò)期,無(wú)法領(lǐng)取紅包钞翔,請(qǐng)進(jìn)行“微信登錄”后再試
      return;
    }
    if (paramInt == -1900001)
    {
      dpc.ap(paramContext, cuk.getString(2131367707));//拆紅包前需要在企業(yè)微信中綁定你的微信帳號(hào)
      return;
    }
    if (paramInt == -1900018)
    {
//你的微信帳號(hào)已被限制使用仔粥,請(qǐng)?jiān)趲ぬ?hào)解封后诫尽,重新通過(guò)“微信登錄”進(jìn)入企業(yè)微信培廓,即可使用紅包功能
      crz.a(paramContext, cuk.getString(2131367803), null, cuk.getString(2131363788), null, new DialogInterface.OnClickListener()//
      {
        public void onClick(DialogInterface paramDialogInterface, int paramInt)
        {
          switch (paramInt)
          {
          case -2:
          case -1:
          }
        }
      });
      return;
    }
    if (paramInt == -1900036)
    {
//根據(jù)央行監(jiān)管要求筐咧,你需要在“微信->我->錢(qián)包->銀行卡”中通過(guò)添加銀行卡進(jìn)行實(shí)名認(rèn)證济欢,才能領(lǐng)取紅包
      crz.a(paramContext, cuk.getString(2131367804), null, cuk.getString(2131363788), null, new DialogInterface.OnClickListener()
      {
        public void onClick(DialogInterface paramDialogInterface, int paramInt)
        {
          switch (paramInt)
          {
          case -2:
          case -1:
          }
        }
      });
      return;
    }
    cty.cV(2131367824, 0);//獲取紅包詳情失敗憔儿,請(qǐng)稍后再試
  }

進(jìn)入紅包界面 綁定參數(shù)

protected void cZ(Context paramContext)
  {
    this.mContext = paramContext;
    this.fSv = new ctq(this.mContext);
    this.fSv.C(new int[] { 2131296550 });
    this.bTJ = getIntent().getLongExtra("extra_key_red_envelope_conversation_id", 0L);
    long l = getIntent().getLongExtra("extra_key_red_envlope_msg_id", 0L);
    this.fSV = getIntent().getIntExtra("extra_key_red_envelope_vid_ticket", 0);
    this.duY = getIntent().getIntExtra("extra_key_red_open_type", 2);
    this.fSw = getIntent().getStringExtra("extra_key_open_result_red_envelope");
    this.bSA = MessageManager.cpc().X(this.bTJ, l);
  }

com.tencent.wework.msg.views.MessageListRedEnvelopeAckItemView
紅包view item
private void cwe()
  {
    ees localees = getMessageItem();
    if ((localees == null) || (localees.cnA() == null))
    {
      bmc.d("MessageListBaseItemView", new Object[] { "handleOpenRedEnvlopeDetail, get messageItem error" });
      return;
    }
    on(true);
    String str1 = localees.cnA().hongbaoid;
    String str2 = cts.ct(localees.cnA().hbticket);
    Object[] arrayOfObject = new Object[4];
    arrayOfObject[0] = "open redEnvelopeDetail ";
    arrayOfObject[1] = str1;
    arrayOfObject[2] = Integer.valueOf(localees.cnA().hongbaotype);
    arrayOfObject[3] = str2;
    bmc.d("MessageListBaseItemView", arrayOfObject);
    RedEnvelopesService.getService().queryHongBaoDetail(str1, str2, new IRedEnvelopesQueryDetailCallBack(localees, str2)
    {
      public void onResult(boolean paramBoolean, int paramInt, RedEnvelopesQueryDetailResult paramRedEnvelopesQueryDetailResult)
      {
        Object[] arrayOfObject = new Object[3];
        arrayOfObject[0] = "open HongBao result";
        arrayOfObject[1] = Boolean.valueOf(paramBoolean);
        arrayOfObject[2] = Integer.valueOf(paramInt);
        bmc.d("MessageListBaseItemView", arrayOfObject);
        MessageListRedEnvelopeAckItemView.a(MessageListRedEnvelopeAckItemView.this, false);
        if (paramRedEnvelopesQueryDetailResult.getReceiveInfoList() != null)
          for (int i = 0; i < paramRedEnvelopesQueryDetailResult.getReceiveInfoList().length; i++)
          {
            long l = paramRedEnvelopesQueryDetailResult.getReceiveInfoList()[i].getInfo().vid;
            if ((MessageListRedEnvelopeAckItemView.a(MessageListRedEnvelopeAckItemView.this)) || (l != dwq.getVid()))
              continue;
            MessageListRedEnvelopeAckItemView.b(MessageListRedEnvelopeAckItemView.this, true);
          }
        if ((paramBoolean) && (paramRedEnvelopesQueryDetailResult.getInfo() != null))
        {
          if (paramRedEnvelopesQueryDetailResult.getInfo().subhongbaotype == 7)
          {
            LishiDetailActivity.a(paramRedEnvelopesQueryDetailResult, this.etw.clL(), this.iaU, MessageListRedEnvelopeAckItemView.a(MessageListRedEnvelopeAckItemView.this), eco.cex().ix(MessageListRedEnvelopeAckItemView.this.bTJ), new UserSceneType(11, 0L));
            return;
          }
          RedEnvelopeDetailActivity.a(paramRedEnvelopesQueryDetailResult, this.etw.clL(), this.iaU, MessageListRedEnvelopeAckItemView.a(MessageListRedEnvelopeAckItemView.this), eco.cex().ix(MessageListRedEnvelopeAckItemView.this.bTJ), new UserSceneType(MessageListRedEnvelopeAckItemView.this.bTJ));
          return;
        }
        if (paramInt == -1900014)
        {
          dpc.da(MessageListRedEnvelopeAckItemView.this.getContext());
          return;
        }
        if ((paramInt == -1900015) && (paramRedEnvelopesQueryDetailResult != null) && (paramRedEnvelopesQueryDetailResult.getInfo() != null) && (!cts.dG(cts.ct(paramRedEnvelopesQueryDetailResult.getInfo().errmsg))))
        {
          dpc.aq(MessageListRedEnvelopeAckItemView.this.getContext(), cts.ct(paramRedEnvelopesQueryDetailResult.getInfo().errmsg));
          return;
        }
        if (paramInt == -1900005)
        {
          crz.a(MessageListRedEnvelopeAckItemView.this.getContext(), cuk.getString(2131367766), null, cuk.getString(2131367793), cuk.getString(2131363518), new DialogInterface.OnClickListener()
          {
            public void onClick(DialogInterface paramDialogInterface, int paramInt)
            {
              switch (paramInt)
              {
              case -2:
              default:
                return;
              case -1:
              }
              MessageListRedEnvelopeAckItemView.b(MessageListRedEnvelopeAckItemView.this);
            }
          });
          return;
        }
        if (paramInt == -1900018)
        {
          crz.a(MessageListRedEnvelopeAckItemView.this.getContext(), cuk.getString(2131367803), null, cuk.getString(2131363788), null, new DialogInterface.OnClickListener()
          {
            public void onClick(DialogInterface paramDialogInterface, int paramInt)
            {
              switch (paramInt)
              {
              case -2:
              case -1:
              }
            }
          });
          return;
        }
        cty.cV(2131367824, 0);
      }
    });
  }
 private boolean h(Intent paramIntent, String paramString)
  {
    bmc.d("MessageListBaseItemView", new Object[] { "handleIntentSpan ", paramIntent, paramString });
    if (paramIntent == null);
    do
      return false;
    while 
((!paramIntent.getComponent().getClassName().equalsIgnoreCase(RedEnvelopeDetailActivity.class.getName())) || ((!cuk.getString(2131367706).equalsIgnoreCase(paramString)) && (!cuk.getString(2131367894).equalsIgnoreCase(paramString))));
    cwe();
    return true;
  }
//cuk.getString(2131367706) :紅包 
//!cuk.getString(2131367894) :紅包 
  • 最后你問(wèn)我企業(yè)微信搶紅包外掛 實(shí)現(xiàn)了嗎忆植?
  • 抱歉不能透露太多
  • 有基于無(wú)障礙輔助的助手在github上有
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市谒臼,隨后出現(xiàn)的幾起案子朝刊,更是在濱河造成了極大的恐慌,老刑警劉巖蜈缤,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拾氓,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡劫樟,警方通過(guò)查閱死者的電腦和手機(jī)痪枫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)叠艳,“玉大人奶陈,你說(shuō)我怎么就攤上這事「浇希” “怎么了吃粒?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)拒课。 經(jīng)常有香客問(wèn)我徐勃,道長(zhǎng),這世上最難降的妖魔是什么早像? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任僻肖,我火速辦了婚禮,結(jié)果婚禮上卢鹦,老公的妹妹穿的比我還像新娘臀脏。我一直安慰自己,他們只是感情好冀自,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布揉稚。 她就那樣靜靜地躺著,像睡著了一般熬粗。 火紅的嫁衣襯著肌膚如雪搀玖。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天驻呐,我揣著相機(jī)與錄音灌诅,去河邊找鬼。 笑死含末,一個(gè)胖子當(dāng)著我的面吹牛延塑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播答渔,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼关带,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了沼撕?” 一聲冷哼從身側(cè)響起宋雏,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎务豺,沒(méi)想到半個(gè)月后磨总,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡笼沥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年蚪燕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了娶牌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡馆纳,死狀恐怖诗良,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鲁驶,我是刑警寧澤鉴裹,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站钥弯,受9級(jí)特大地震影響径荔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜脆霎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一总处、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧睛蛛,春花似錦辨泳、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至难菌,卻和暖如春试溯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背郊酒。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工遇绞, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人燎窘。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓摹闽,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親褐健。 傳聞我的和親對(duì)象是個(gè)殘疾皇子付鹿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 在2018年微信公開(kāi)課pro上,騰訊高級(jí)副總裁張小龍介紹了過(guò)去微信在小程序蚜迅、小游戲舵匾、公眾號(hào)等方面的布局,并透露了微...
    桂圓_noble閱讀 519評(píng)論 0 4
  • 我從小在鄉(xiāng)下長(zhǎng)大谁不,野慣了坐梯,不管包裝得多好,還是摁不住心中的野刹帕。人類(lèi)居住在城市其實(shí)是不科學(xué)的吵血,像是硬生生把一個(gè)孩子從...
    漸行踐遠(yuǎn)閱讀 385評(píng)論 2 2
  • 她決定去死谎替。死在現(xiàn)在,死在當(dāng)下蹋辅∏幔活著沒(méi)有任何意義了。畢竟到現(xiàn)在為止晕翠,她的人生是悲劇的喷舀。 她不懷念16歲的自己砍濒。因?yàn)?..
    果子貍的果子爛掉了閱讀 225評(píng)論 0 0
  • 李笑來(lái)老師曾經(jīng)說(shuō)過(guò):從來(lái)沒(méi)有什么學(xué)習(xí)行為是像英語(yǔ)學(xué)習(xí)這樣如此驚人的大面積失敗的淋肾。有那么多的英語(yǔ)學(xué)習(xí)者從小學(xué)到大學(xué),...
    悅讀思考閱讀 1,598評(píng)論 3 5