Categories
爪机爪机

L720 官方ROM彩信功能

/system/framework/telephony-common.jar
现在三棒把通讯相关的东西从frameworks.jar抽出来放到了这里,其实没多大变化。
参考了一篇两年前的文章:http://www.miui.com/thread-378600-1-1.html
受益匪浅!基本就是照着这个来的…
comandroidinternaltelephonycdmaCdmaSMSDispatcher.smali文件
1.找到所有 0x1004的地方,从const/16改成const,数值改成0xfeda
2.找到调用方法processCdmaWapPdu的上面几行,####中间的为添加的内容
 
 

    move-object/from16 v0, p0
    iget-object v3, v0, Lcom/android/internal/telephony/SMSDispatcher;->mWapPush:Lcom/android/internal/telephony/WapPushOverSms;
    invoke-virtual/range {p1 .. p1}, Lcom/android/internal/telephony/SmsMessageBase;->getOriginatingAddress()Ljava/lang/String;
    move-result-object v4
    invoke-virtual/range {p1 .. p1}, Lcom/android/internal/telephony/SmsMessageBase;->getTimestampMillis()J
    move-result-wide v5
    invoke-virtual {v3, v4, v5, v6}, Lcom/android/internal/telephony/WapPushOverSms;->setWpaPushAddressTimeStamp(Ljava/lang/String;J)V
    .line 344
    invoke-virtual/range {v20 .. v20}, Lcom/android/internal/telephony/cdma/SmsMessage;->getUserData()[B
    move-result-object v3
    ###########################
    move-object/from16 v11, v3 #v20: userData
    array-length v11, v11 #v11 userData.length
    new-instance v12, Lcom/android/internal/util/BitwiseInputStream;
    invoke-direct {v12, v3}, Lcom/android/internal/util/BitwiseInputStream;->([B)V  # v12: bis
    const/16 v8, 0x45
    invoke-virtual {v12, v8}, Lcom/android/internal/util/BitwiseInputStream;->skip(I)V
    mul-int/lit8 v11, v11, 0x8
    add-int/lit8 v11, v11, -0x48  # userData.length*8 - 72
    invoke-virtual {v12, v11}, Lcom/android/internal/util/BitwiseInputStream;->readByteArray(I)[B
    move-result-object v3
    ###########################
    move-object/from16 v0, v20
    iget v4, v0, Lcom/android/internal/telephony/SmsMessageBase;->messageRef:I
    invoke-virtual/range {v20 .. v20}, Lcom/android/internal/telephony/cdma/SmsMessage;->getOriginatingAddress()Ljava/lang/String;
    move-result-object v5
    move-object/from16 v0, p0
    invoke-virtual {v0, v3, v4, v5}, Lcom/android/internal/telephony/cdma/CdmaSMSDispatcher;->processCdmaWapPdu([BILjava/lang/String;)I
    move-result v3

3.用海卓APN什么的软件改彩信APN

Categories
爪机爪机

HTC Droid DNA无法开启Wifi 热点的问题的解决方案(不存在VZW UICC)

原创内容,转载请务必注明本博文地址

http://blog.dayandcarrot.net/2013/06/htc-droid-dna-wifi-ap-problem/

/system/app/WifiRounter.apk里面找到了点线索,这个程序是负责WifiAP的,但是它不掌权,还需要向一个WifiService去Request开启WiFiAP,如果不行就通过TetheringGuard.apk提示出错,然后就有了错误信息,不存在VZW UICC之类的。
一开始我以为WifiService是掌权的,里面有个CustomUtils很是可疑,但是修改之后发现没用。
之后根据Logcat找哪里出了问题,发现有错误提示说什么DENY之类的,发出log的tag叫WifiService。想了一下可能这个东西在/system/framework/services.jar里面,解包了一下果然如此。
然后就是修改过程了,里面有个方法叫
.method private setWifiApMhsRequest(ZZILandroid/net/wifi/WifiConfiguration;)Z
翻译成Java代码差不多这样(感谢Java Decompiler):
 

private boolean setWifiApMhsRequest(boolean paramBoolean1, boolean paramBoolean2, int paramInt, WifiConfiguration paramWifiConfiguration)
  {
    Slog.e("WifiService", "setWifiApMhsRequest enter");
    boolean bool;
    if (SystemProperties.get("net.frisbee.enabled", "0").equals("1"))
    {
      Slog.e("WifiService", "ignore MHS for Frisbee");
      setParameterMHS(paramBoolean1, paramBoolean2, paramInt, paramWifiConfiguration);
      this.mWifiApMhsPermission = true;
      this.mProcessingMHS = false;
      checkWifiApRemindDialog();
      bool = true;
    }
    while (true)
    {
      return bool;
      if ((this.mProcessingMHS == true) && (paramBoolean1 == true))
      {
        Slog.e("WifiService", "MHS is processing");
        bool = false;
      }
      else if ((this.mEnableMhsFeature) && (!paramBoolean1))
      {
        this.mWifiApMhsPermission = false;
        this.mProcessingMHS = false;
        setWifiApEnabled(null, false);
        bool = true;
      }
      else
      {
        setParameterMHS(paramBoolean1, paramBoolean2, paramInt, paramWifiConfiguration);
        this.mCm = ((ConnectivityManager)this.mContext.getSystemService("connectivity"));
        this.mMhsStatus = this.mCm.htcRequestPermittedTether(-19, -1, null);
        if (this.mMhsStatus == 0)
        {
          Slog.e("WifiService", "MHS HTC_PERMITTED_TETHER_ALLOW");
          this.mWifiApMhsPermission = true;
          this.mProcessingMHS = false;
          checkWifiApRemindDialog();
        }
        label236:
        do
          while (true)
          {
            bool = true;
            break;
            if (this.mMhsStatus != 1)
              break label236;
            Slog.e("WifiService", "MHS HTC_PERMITTED_TETHER_DENY");
            this.mWifiApMhsPermission = false;
            this.mProcessingMHS = false;
          }
        while (this.mMhsStatus != 2);
        Slog.e("WifiService", "MHS HTC_PERMITTED_TETHER_PROGRASSING");
        this.mWifiApMhsPermission = false;
        bool = false;
      }
    }
  }

然后里面有个不知道什么东西的特权参数,叫做

net.frisbee.enabled

如果这个的值是1的话,那么就直接给权限,显然我们要做的任务很简单
把那个.equals(“1”)改成”0″就行啦~
改完了之后差不多这样:

    .line 4506
    const-string v0, "net.frisbee.enabled"
    const-string v3, "0"
    invoke-static {v0, v3}, Landroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    move-result-object v0
    #const-string v3, "1"
#MODIFIED
    const-string v3, "0"
    invoke-virtual {v0, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
    move-result v0
    if-eqz v0, :cond_2d
    .line 4507
    const-string v0, "WifiService"
    const-string v3, "ignore MHS for Frisbee"
    invoke-static {v0, v3}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I

回编译回去就搞定了~
刚好2点,继续复习操作系统软

Categories
爪机爪机

[转载] 美国V版HTC Droid DNA支持电信3G上网的破解方法(改Radio)

本文转载自:
http://droiddna.diypda.com/thread-942842-1-1.html
==========================================
美国V版HTC Droid DNA原生并不支持电信3G上网,未经破解或刷了官ROM的原生基带后,电信卡信号上有个小三角,不能3G,需要对基带进行破解。具体方法:
1、从手机上提取radio.img

  • adb shell
  • su
  • 回手机上点授权,出现 # 后输入:
  • dd if=/dev/block/mmcblk0p16 of=/sdcard/radio.img
  • 操作完成后,radio.img会提取到sdcard卡上,提到电脑上进行下一步修改。
  • 手机继续连接电脑,DOS窗口保留着,等下一步还会用。

2、修改radio.img

  • 用UltraEdit工具打开radio.img
  • 搜索:  257fffff306f257f
  • 替换:  257fffff5a6f257f
  • 鼠标移下一行后,继续:
  • 搜索:  257fffff5a6f257f
  • 替换:  257fffff306f257f
  • 保存后,将radio.img复制到sdcard卡替换原来提取的

重刷radio.img:上述操作完后,回DOS窗口输入

  • dd if=/mnt/sdcard/radio.img of=/dev/block/mmcblk0p16
  • 如之前己关掉DOS窗口,需重新打开DOS窗口先执行:
  • adb shell
  • su
  • 回手机上点授权,出现 # 后再输入第一条命令

 
如果还是不能上网,用QPST改SIMPLE IP以及[email protected]和vnet.mobi
 

Categories
爪机爪机

HTC 修改Settings.apk使*#*#4636#*#* ##778#之类的指令可用

用不来的原因是Settings.apk里面一个Flag变成False了,就不允许你通过拨号盘输入这些特殊指令。
smalicomandroidsettingsframeworkflagfeature
这个目录底下有个HtcTestFeatureFlags.smali
里面有个函数叫
.method public static final supportDialingSecretCode(Landroid/content/Context;)Z
是管这个事情的
把整个函数直接返回True就行了
 

.method public static final supportDialingSecretCode(Landroid/content/Context;)Z
    .locals 1
    .parameter "context"
    .prologue
    .line 57
    const/4 v0, 0x1
    return v0
.end method