Last active
October 23, 2016 15:26
-
-
Save fffonion/17a186ee4622b07cbf5b to your computer and use it in GitHub Desktop.
wlanchang smali auto inject
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.class public Lcom/test/Debug; | |
.super Ljava/lang/Object; | |
# static fields | |
.field public static final DEBUG_BILLING_DUMMY:Z = false | |
.field public static final DEBUG_CHECK_MD5:Z = false | |
.field public static final DEBUG_DISABLE_EVIDENCE:Z = false | |
.field public static final DEBUG_DOWNLOAD_GROUP:Z = false | |
.field public static final DEBUG_DUMP_MEMORY_INFO:Z = false | |
.field public static final DEBUG_IGNORE_SQMK_LIB:Z = false | |
.field public static final DEBUG_INVALIDITY_WEBVIEW:Z = false | |
.field public static final DEBUG_LOG_CRYPT_KEY:Z = false | |
.field public static final DEBUG_LOG_DETAIL:Z = false | |
.field public static final DEBUG_LOG_RAW_TOUCH_EVENT:Z = false | |
.field public static final DEBUG_LOG_RESPONSE_XML:Z = false | |
.field public static final DEBUG_LOG_SPEC_INFO:Z = false | |
.field public static final DEBUG_LOG_TOUCH_EVENT:Z = false | |
.field public static final DEBUG_MENU_KEY:Z = false | |
.field public static final DEBUG_REMOVE_SAVE_DATA_FILE:Z = false | |
.field public static final DEBUG_SAVE_ERROR_LOG:Z = false | |
.field public static final DEBUG_TEST_VIEW:Z = false | |
.field public static final DEBUG_TRACE:Z = false | |
.field public static DEBUG_TRACEVIEW:Z = false | |
.field public static final DEBUG_UNAVAILABLE_EXTERNAL_STORAGE:Z = false | |
.field public static final DEBUG_USE_SET_FIXED_SIZE:Z = false | |
.field public static final DEBUG_WITHOUT_IMEI:Z = false | |
.field public static MARKET:Ljava/lang/String; = null | |
.field public static final RELEASE_GOOGLE_BILLING:Z = true | |
.field public static final RELEASE_LIVE:Z = true | |
.field public static TAG:Ljava/lang/String; = null | |
.field public static TAG_GP:Ljava/lang/String; = null | |
.field public static final TRACEVIEW_PATH:Ljava/lang/String; = "traceview" | |
# direct methods | |
.method static constructor <clinit>()V | |
.locals 1 | |
const-string v0, "RJ-java" | |
sput-object v0, Lcom/test/Debug;->TAG:Ljava/lang/String; | |
const-string v0, "RJ-GP" | |
sput-object v0, Lcom/test/Debug;->TAG_GP:Ljava/lang/String; | |
const-string v0, "Google" | |
sput-object v0, Lcom/test/Debug;->MARKET:Ljava/lang/String; | |
const/4 v0, 0x0 | |
sput-boolean v0, Lcom/test/Debug;->DEBUG_TRACEVIEW:Z | |
return-void | |
.end method | |
.method public constructor <init>()V | |
.locals 0 | |
invoke-direct {p0}, Ljava/lang/Object;-><init>()V | |
return-void | |
.end method | |
.method public static varargs detail(Ljava/lang/String;[Ljava/lang/Object;)V | |
.locals 2 | |
.param p0, "format" # Ljava/lang/String; | |
.param p1, "objs" # [Ljava/lang/Object; | |
.prologue | |
invoke-static {p0, p1}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; | |
move-result-object v0 | |
const-string v1, "RJ-DETAIL" | |
invoke-static {v1, v0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I | |
return-void | |
.end method | |
.method public static varargs err(Ljava/lang/String;[Ljava/lang/Object;)V | |
.locals 2 | |
.param p0, "format" # Ljava/lang/String; | |
.param p1, "objs" # [Ljava/lang/Object; | |
.prologue | |
invoke-static {p0, p1}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; | |
move-result-object v0 | |
const-string v1, "RJ-ERROR" | |
invoke-static {v1, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I | |
return-void | |
.end method | |
.method public static varargs log(Ljava/lang/String;[Ljava/lang/Object;)V | |
.locals 1 | |
.param p0, "format" # Ljava/lang/String; | |
.param p1, "objs" # [Ljava/lang/Object; | |
.prologue | |
const-string v0, "RJ" | |
invoke-static {v0, p0, p1}, Lcom/test/Debug;->logWithTag(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V | |
return-void | |
.end method | |
.method public static varargs logGP(Ljava/lang/String;[Ljava/lang/Object;)V | |
.locals 1 | |
.param p0, "format" # Ljava/lang/String; | |
.param p1, "objs" # [Ljava/lang/Object; | |
.prologue | |
const-string v0, "RJ-GP" | |
invoke-static {v0, p0, p1}, Lcom/test/Debug;->logWithTag(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V | |
return-void | |
.end method | |
.method public static varargs logWithTag(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V | |
.locals 1 | |
.param p0, "tag" # Ljava/lang/String; | |
.param p1, "format" # Ljava/lang/String; | |
.param p2, "objs" # [Ljava/lang/Object; | |
.prologue | |
invoke-static {p1, p2}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; | |
move-result-object v0 | |
invoke-static {p0, v0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I | |
return-void | |
.end method | |
.method public static log_cjh(Ljava/lang/String;)V | |
.locals 1 | |
const-string v0, "RJ-WLANCHANG" | |
invoke-static {v0, p0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I | |
return-void | |
.end method | |
.method public static log_pwd(Ljava/lang/String;)V | |
.locals 1 | |
const-string v0, "WLANCHANG-PASSWORD" | |
invoke-static {v0, p0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I | |
return-void | |
.end method | |
.method public static log_usr(Ljava/lang/String;)V | |
.locals 1 | |
const-string v0, "WLANCHANG-USERNAME" | |
invoke-static {v0, p0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I | |
return-void | |
.end method | |
.method public static startMethodTracing()V | |
.locals 2 | |
sget-boolean v0, Lcom/test/Debug;->DEBUG_TRACEVIEW:Z | |
if-eqz v0, :cond_0 | |
const-string v0, "traceview : start" | |
const/4 v1, 0x0 | |
new-array v1, v1, [Ljava/lang/Object; | |
invoke-static {v0, v1}, Lcom/test/Debug;->log(Ljava/lang/String;[Ljava/lang/Object;)V | |
invoke-static {}, Landroid/os/Debug;->startMethodTracing()V | |
:cond_0 | |
return-void | |
.end method | |
.method public static stopMethodTracing()V | |
.locals 2 | |
sget-boolean v0, Lcom/test/Debug;->DEBUG_TRACEVIEW:Z | |
if-eqz v0, :cond_0 | |
const-string v0, "traceview : stop" | |
const/4 v1, 0x0 | |
new-array v1, v1, [Ljava/lang/Object; | |
invoke-static {v0, v1}, Lcom/test/Debug;->log(Ljava/lang/String;[Ljava/lang/Object;)V | |
invoke-static {}, Landroid/os/Debug;->stopMethodTracing()V | |
:cond_0 | |
return-void | |
.end method | |
.method public static varargs warning(Ljava/lang/String;[Ljava/lang/Object;)V | |
.locals 2 | |
.param p0, "format" # Ljava/lang/String; | |
.param p1, "objs" # [Ljava/lang/Object; | |
.prologue | |
invoke-static {p0, p1}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; | |
move-result-object v0 | |
const-string v1, "RJ-WARNING" | |
invoke-static {v1, v0}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I | |
return-void | |
.end method |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os, os.path as opath | |
import re | |
SRC_DIR = r'Z:\wlanchang-3.0.3.1' | |
#TARG_DIR = r'Z:\out' | |
keyword_name = ['user', 'usr'] | |
keyword_pwd = ['password', 'pwd'] | |
black_list = ['wlanuserip','agent','usertype'] | |
# if not opath.exists(TARG_DIR): | |
# os.mkdir(TARG_DIR) | |
SRC_DIR = opath.join(SRC_DIR ,r'smali\com\wlanplus\chang') | |
#copy debug classes | |
_debug_class = opath.join(SRC_DIR, r'..\..\..\..\smali\com\test')#back to smali\com\debug | |
if not opath.exists(_debug_class): | |
print(_debug_class) | |
os.makedirs(_debug_class) | |
open(opath.join(_debug_class, 'Debug.smali'), 'w').write(open('Debug.smali').read()) | |
#find class | |
for root, ds, fs in os.walk(SRC_DIR): | |
for f in fs: | |
if open(opath.join(root, f)).read().find('logonsessid') != -1:#login classes | |
SRC_DIR = root | |
break | |
if SRC_DIR.endswith('smali\com\wlanplus\chang'):#not found | |
print('LOGIN classes not found.') | |
os._exit(0) | |
print('LOGIN classes are under %s' % SRC_DIR) | |
keyword_match = lambda s, lst:sum([1 if x in s.lower() else 0 for x in lst]) > 0 | |
keyword_match_lines = lambda ss, lst:[s for s in range(len(ss)) if sum([1 if x in ss[s].lower() else 0 for x in lst]) > 0] | |
for smali in os.listdir(SRC_DIR): | |
_readlines = open(opath.join(SRC_DIR, smali)).readlines() | |
_outfile = open(opath.join(SRC_DIR, smali), 'w') | |
_lastline = []#last 1 -> [-1] | |
_inject_cnt = 0 | |
for line in _readlines: | |
#type 1, form submit | |
if re.search("invoke-interface \{[pv\d]{2,3}, [pv\d]{2,3}, [pv\d]{2,3}\}, Ljava/util/Map;->put\(Ljava/lang/Object;Ljava/lang/Object;\)Ljava/lang/Object", line) \ | |
and not keyword_match(_lastline[-1], black_list): | |
_m = keyword_match_lines(_lastline, keyword_name + keyword_pwd) | |
if _m: | |
line_idx = _m[-1] | |
_reg = re.findall('[pv\d]{2,3}, [pv\d]{2,3}, ([pv\d]{2,3})', line)[0] | |
if keyword_match(_lastline[line_idx], black_list): | |
_inject_cnt -= 1 | |
elif keyword_match(_lastline[line_idx], keyword_name): | |
_outfile.write(" invoke-static {%s}, Lcom/test/Debug;->log_usr(Ljava/lang/String;)V\n\n" % _reg) | |
elif keyword_match(_lastline[line_idx], keyword_pwd): | |
_outfile.write(" invoke-static {%s}, Lcom/test/Debug;->log_pwd(Ljava/lang/String;)V\n\n" % _reg) | |
else: | |
_inject_cnt -= 1 | |
_inject_cnt += 1 | |
#type 2, raw form-encoded | |
elif re.search("invoke-virtual \{[pv\d]{2,3}, [p\d]{2,3}\}, Ljava/lang/StringBuilder;->append\(Ljava/lang/String;\)Ljava/lang/StringBuilder;", line): | |
_m = keyword_match_lines(_lastline, keyword_name) | |
if _m: | |
line_idx = _m[-1] | |
_reg = re.findall('[pv\d]{2,3}, ([pv\d]{2,3})', line)[0] | |
if keyword_match(_lastline[line_idx], keyword_name): | |
_outfile.write(" invoke-static {%s}, Lcom/test/Debug;->log_usr(Ljava/lang/String;)V\n\n" % _reg) | |
_outfile.write(" invoke-static {%s%d}, Lcom/test/Debug;->log_pwd(Ljava/lang/String;)V\n\n" % (_reg[0], int(_reg[1:])+1)) | |
else: | |
_inject_cnt -= 1 | |
_inject_cnt += 1 | |
_outfile.write(line) | |
if line.strip('\n\r ')!='': | |
if len(_lastline) > 5: | |
_lastline.pop(0) | |
_lastline.append(line) | |
_outfile.flush() | |
_outfile.close() | |
print('%s done. inject %d' % (smali, _inject_cnt)) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment