package
com.tencent.StubShell;
public
class
CheckVirtual {
private
static
final
java.lang.String TAG =
"CheckVirtual"
;
private
static
java.lang.String exec(java.lang.String str) {
java.io.BufferedOutputStream bufferedOutputStream;
java.lang.Object obj;
java.lang.Object obj2;
java.io.BufferedInputStream obj3;
java.lang.Throwable th;
java.lang.Throwable th2;
java.lang.String str2 =
null
;
java.lang.Process exec;
try
{
exec = java.lang.Runtime.getRuntime().exec(
"sh"
);
try
{
bufferedOutputStream =
new
java.io.BufferedOutputStream(exec.getOutputStream());
}
catch
(java.lang.Exception e) {
obj3 = str2;
obj2 = str2;
if
(bufferedOutputStream !=
null
) {
}
if
(obj3 !=
null
) {
}
if
(exec !=
null
) {
}
return
str2;
}
catch
(java.lang.Throwable th3) {
obj2 = str2;
java.lang.String str3 = str2;
th = th3;
obj3 = str3;
if
(bufferedOutputStream !=
null
) {
}
if
(obj3 !=
null
) {
}
if
(exec !=
null
) {
}
throw
th;
}
try
{
obj3 =
new
java.io.BufferedInputStream(exec.getInputStream());
try
{
bufferedOutputStream.write(str.getBytes());
bufferedOutputStream.write(
10
);
bufferedOutputStream.flush();
bufferedOutputStream.close();
exec.waitFor();
str2 = getStrFromBufferInputSteam(obj3);
if
(bufferedOutputStream !=
null
) {
try
{
bufferedOutputStream.close();
}
catch
(java.io.IOException e2) {
e2.printStackTrace();
}
}
if
(obj3 !=
null
) {
try
{
obj3.close();
}
catch
(java.io.IOException e3) {
e3.printStackTrace();
}
}
if
(exec !=
null
) {
exec.destroy();
}
}
catch
(java.lang.Exception e4) {
}
catch
(Throwable th4) {
th = th4;
if
(bufferedOutputStream !=
null
) {
}
if
(obj3 !=
null
) {
}
if
(exec !=
null
) {
}
throw
th;
}
}
catch
(java.lang.Exception e5) {
obj3 = str2;
if
(bufferedOutputStream !=
null
) {
try
{
bufferedOutputStream.close();
}
catch
(java.io.IOException e22) {
e22.printStackTrace();
}
}
if
(obj3 !=
null
) {
try
{
obj3.close();
}
catch
(java.io.IOException e32) {
e32.printStackTrace();
}
}
if
(exec !=
null
) {
exec.destroy();
}
return
str2;
}
catch
(java.lang.Throwable th32) {
th2 = th32;
obj3 = str2;
th = th2;
if
(bufferedOutputStream !=
null
) {
try
{
bufferedOutputStream.close();
}
catch
(java.io.IOException e222) {
e222.printStackTrace();
}
}
if
(obj3 !=
null
) {
try
{
obj3.close();
}
catch
(java.io.IOException e322) {
e322.printStackTrace();
}
}
if
(exec !=
null
) {
exec.destroy();
}
throw
th;
}
}
catch
(java.lang.Exception e6) {
exec = str2;
obj3 = str2;
bufferedOutputStream = str2;
}
catch
(java.lang.Throwable th5) {
obj3 = str2;
bufferedOutputStream = str2;
th2 = th5;
exec = str2;
th = th2;
if
(bufferedOutputStream !=
null
) {
}
if
(obj3 !=
null
) {
}
if
(exec !=
null
) {
}
throw
th;
}
return
str2;
}
private
static
java.lang.String getStrFromBufferInputSteam(java.io.BufferedInputStream bufferedInputStream) {
if
(bufferedInputStream ==
null
) {
return
""
;
}
byte
[] bArr =
new
byte
[
512
];
java.lang.StringBuilder stringBuilder =
new
java.lang.StringBuilder();
int
read;
do
{
try
{
read = bufferedInputStream.read(bArr);
if
(read >
0
) {
stringBuilder.append(
new
java.lang.String(bArr,
0
, read));
continue
;
}
}
catch
(java.lang.Exception e) {
e.printStackTrace();
}
}
while
(read >=
512
);
return
stringBuilder.toString();
}
public
static
java.lang.String getUidStrFormat() {
java.lang.String exec = exec(
"cat /proc/self/cgroup"
);
if
(exec ==
null
|| exec.length() ==
0
) {
return
null
;
}
int
lastIndexOf = exec.lastIndexOf(
"uid"
);
int
lastIndexOf2 = exec.lastIndexOf(
"/pid"
);
if
(lastIndexOf <
0
) {
return
null
;
}
if
(lastIndexOf2 <=
0
) {
lastIndexOf2 = exec.length();
}
try
{
if
(!isNumber(exec.substring(lastIndexOf +
4
, lastIndexOf2).replaceAll(
"\n"
,
""
))) {
return
null
;
}
return
java.lang.String.format(
"u0_a%d"
,
new
java.lang.Object[]{java.lang.Integer.valueOf(java.lang.Integer.valueOf(exec.substring(lastIndexOf +
4
, lastIndexOf2).replaceAll(
"\n"
,
""
)).intValue() -
10000
)});
}
catch
(java.lang.Exception e) {
e.printStackTrace();
return
null
;
}
}
public
static
boolean
isNumber(java.lang.String str) {
if
(str ==
null
|| str.length() ==
0
) {
return
false
;
}
for
(
int
i =
0
; i < str.length(); i++) {
if
(!java.lang.Character.isDigit(str.charAt(i))) {
return
false
;
}
}
return
true
;
}
public
static
boolean
isRunInVirtual() {
java.lang.CharSequence uidStrFormat = getUidStrFormat();
java.lang.String exec = exec(
"ps"
);
if
(exec ==
null
|| exec ==
""
) {
return
false
;
}
java.lang.String[] psLine = exec.split(
"\n"
);
if
(psLine ==
null
|| psLine.length <=
0
) {
return
false
;
}
int
i =
0
;
for
(
int
i2 =
0
; i2 < psLine.length; i2++) {
if
(psLine[i2].contains(uidStrFormat)) {
int
lastIndexOf = psLine[i2].lastIndexOf(
" "
);
java.lang.String substring = psLine[i2].substring(lastIndexOf <=
0
?
0
: lastIndexOf +
1
, psLine[i2].length());
if
(
new
java.io.File(java.lang.String.format(
"/data/data/%s"
,
new
java.lang.Object[]{substring, java.util.Locale.CHINA})).exists()) {
i++;
}
}
}
return
i >
1
;
}
}