apk指定一个区域,硬改座标位置,QiPian应用程序。
java:
private static Location setRandomCoordinate(Location location) { if (location != null){ location.setLongitude(randomLon(-118.2638953700764,-118.22362187841841)); location.setLatitude(randomLat(36.03276747978524,36.04903490907145)); } return location; } private static double randomLon(double MinLon, double MaxLon) { java.math.BigDecimal db = new java.math.BigDecimal(Math.random() * (MaxLon - MinLon) + MinLon); double lon = db.setScale(7, java.math.BigDecimal.ROUND_HALF_UP).doubleValue(); return lon; } private static double randomLat(double MinLat, double MaxLat) { java.math.BigDecimal db = new java.math.BigDecimal(Math.random() * (MaxLat - MinLat) + MinLat); double lat = db.setScale(7, java.math.BigDecimal.ROUND_HALF_UP).doubleValue(); return lat; }
smali:
.method private static randomLat(DD)D .registers 12 .param p0, "MinLat" # D .param p2, "MaxLat" # D .prologue .line 166 new-instance v0, Ljava/math/BigDecimal; invoke-static {}, Ljava/lang/Math;->random()D move-result-wide v4 sub-double v6, p2, p0 mul-double/2addr v4, v6 add-double/2addr v4, p0 invoke-direct {v0, v4, v5}, Ljava/math/BigDecimal;-><init>(D)V .line 167 .local v0, "db":Ljava/math/BigDecimal; const/4 v1, 0x7 const/4 v4, 0x4 invoke-virtual {v0, v1, v4}, Ljava/math/BigDecimal;->setScale(II)Ljava/math/BigDecimal; move-result-object v1 invoke-virtual {v1}, Ljava/math/BigDecimal;->doubleValue()D move-result-wide v2 .line 168 .local v2, "lat":D return-wide v2 .end method .method private static randomLon(DD)D .registers 12 .param p0, "MinLon" # D .param p2, "MaxLon" # D .prologue .line 161 new-instance v0, Ljava/math/BigDecimal; invoke-static {}, Ljava/lang/Math;->random()D move-result-wide v4 sub-double v6, p2, p0 mul-double/2addr v4, v6 add-double/2addr v4, p0 invoke-direct {v0, v4, v5}, Ljava/math/BigDecimal;-><init>(D)V .line 162 .local v0, "db":Ljava/math/BigDecimal; const/4 v1, 0x7 const/4 v4, 0x4 invoke-virtual {v0, v1, v4}, Ljava/math/BigDecimal;->setScale(II)Ljava/math/BigDecimal; move-result-object v1 invoke-virtual {v1}, Ljava/math/BigDecimal;->doubleValue()D move-result-wide v2 .line 163 .local v2, "lon":D return-wide v2 .end method .method private static setRandomCoordinate(Landroid/location/Location;)Landroid/location/Location; .registers 5 .param p0, "location" # Landroid/location/Location; .prologue .line 154 if-eqz p0, :cond_24 .line 155 const-wide v0, -0x3fa26f1c5697fd30L # -118.2638953700764 const-wide v2, -0x3fa271b02ddc6176L # -118.22362187841841 invoke-static {v0, v1, v2, v3}, LYOUR_CLASS;->randomLon(DD)D move-result-wide v0 invoke-virtual {p0, v0, v1}, Landroid/location/Location;->setLongitude(D)V .line 156 const-wide v0, 0x40410431b98b0665L # 34.03276747978524 const-wide v2, 0x40410646c6a16980L # 34.04903490907145 invoke-static {v0, v1, v2, v3}, LYOUR_CLASS;->randomLat(DD)D move-result-wide v0 invoke-virtual {p0, v0, v1}, Landroid/location/Location;->setLatitude(D)V .line 158 :cond_24 return-object p0 .end method