ggtoast編譯工具
『壹』 Toast.makeText方法中的字元串可以使用R.string.no_update方式么但是編譯不過
Toast 類提供了2個靜態方法來顯示提示信息
1 public static Toast makeText(context, text, ration){}
2 public static Toast makeText(context, resId, ration){}
第二個參數可以是字元串,也可以是資源字元串的id
題目中定義的值和使用的名稱不一致
R.string.no_update
no_apk_update
『貳』 Framework層下如何根據代碼中的包名找到類所在的路徑
如果想改Framework,使用eclipse是無法編譯通過的。需要按照Android源碼工程中介紹的方法,在linux環境下安裝各種編譯工具,才能完成編譯。針對系統開發來說,Eclipse頂多是一個代碼瀏覽和編輯工具,當然也可以是調試工具。
『叄』 我用gg改王者榮耀上帝視角,改不了,請仔細閱讀一下補充
找個框架。
把王者,qq,還有修改器都放到框架裡面。框架是獨立於手機外的一個獨立的空間。這個腳本呢?
function DZSH()
menu = gg.multiChoice({
"王者透視",
"退出腳本"
}, nil, "開局載入到60%左右開始腳本")
if menu == nil then
else
if menu[1] == true then
HZ1()
end
if menu[2] == true then
HZ8()
end
end
PD1 = 0
PD2 = 0
end
function HZ1()
gg.clearResults()
gg.searchNumber("40;0.35836800933;0.93358039856::", 16, false, 536870912, 0, -1)
gg.searchNumber("0.35836800933", 16, false, 536870912, 0, -1)
gg.getResults(1)
gg.editAll("0.54", 16)
gg.toast("60%%")
gg.clearResults()
gg.setRanges(4)
gg.searchNumber("14.45322227478;0.35836800933;0.93358039856::", 16, false, 536870912, 0, -1)
gg.searchNumber("14.45322227478", 16, false, 536870912, 0, -1)
gg.getResults(1)
gg.editAll("40", 16)
gg.toast("30%%")
gg.clearResults()
gg.toast("王者視野成功")
end
while true do
if gg.isVisible(true) then
PD1 = nil
gg.setVisible(false)
end
if PD1 == nil then
DZSH()
end
end
『肆』 為什麼我用show java手機版反編譯出來的工程用AIDE打開會有很多錯誤
本文詳細介紹了如何反編譯一個未被混淆過的Android APK,修改smali位元組碼後,再回編譯成APK並更新簽名,使之可正常安裝。破譯後的apk無論輸入什麼樣的用戶名和密碼都可以成功進入到第二個Activity。
有時難免要反編譯一個APK,修改其中的若干關鍵判斷點,然後再回編譯成一個全新的可用的apk,這完全是可實現的。若要完成上述工作,需要以下工具,雜家後面會把下載鏈接也附上。這些軟體截止本文發布時,經過雜家確認都是最新的版本。
1.APK-Multi-Toolv1.0.11.zip 用它來反編譯apk,得到smali類型的源碼和資源文件。一般來講,直接解壓縮一個apk也可以看到其資源文件,但部分xml是不可閱讀的,需用此工具反編譯。網上流傳較廣的是一個經過高人漢化過的版本1.0.3,第一次使用這個工具可以用這個漢化的版本,熟悉其命令。但經過雜家測試,這個漢化的版本再回編譯apk簽名時已經出問題了,簽不了,最終用的最新版才ok。
2.dex2jar-0.0.9.15.zip 用於將一個apk文件轉換成jar類型的文件,轉換之後再利用下面的jd-gui工具才能看到其java代碼。上面的apk-tool固然強大,但是反編譯出來是smali文件,即dalvik位元組碼,類似匯編語言的一種代碼,直接閱讀如天書一樣,為此我們需要使用dex2jar + jd-gui來得到其java代碼,進行閱讀找到要修改的關鍵點。
3.jd-gui-0.3.6.windows.zip 可以打開一個jar類型的文件,看到java代碼。並能將代碼保存,保存後再弄到sourceinsight里就方便看了。最好使用本文所說的最新版本,使用老版本會發現一個BActivity,如果裡面有內部類,則又多出一個BActivity$1.java,類似這種文件。新版本沒這個問題。
4.Smali2Java.1.0.0.558.zip 用於將smali文件轉成java文件,這個工具僅僅是備用。因為用上面三個工具已經能夠勝任本文的要求了。
如果第一次接觸反編譯,不了解smali語法,可以閱讀鏈接1 鏈接2
下面雜家先上一個Android APK,用來簡單模擬用戶登錄的情況,注意只能是模擬哈。因為正式的apk很少有在本地進行判斷的。此apk要求用戶輸入用戶名和密碼,如果用戶名為yanzi,密碼為123,則認為合法,自動跳轉到第二個Activity。否則提示用戶名或密碼不正確。
<span style="font-family:Comic Sans MS;font-size:18px;">package org.yanzi.decomdemo.activity;
import org.yanzi.decompiledemo.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class LoginActivity extends Activity {
EditText loginName = null;
EditText loginPswd = null;
Button loginBtn = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
initUI();
loginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(isAllowLogin()){
Intent intent = new Intent(LoginActivity.this, SecondActivity.class);
startActivity(intent);
LoginActivity.this.finish();
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.login, menu);
return true;
}
private void initUI(){
loginName = (EditText)findViewById(R.id.edit_login_name);
loginPswd = (EditText)findViewById(R.id.edit_login_pswd);
loginBtn = (Button)findViewById(R.id.btn_login);
}
private boolean isAllowLogin(){
String name = loginName.getText().toString().trim();
String pswd = loginPswd.getText().toString().trim();
if(name != null && pswd != null){
if(name.equals("") || pswd.equals("")){
Toast.makeText(this, "密碼或用戶名不能為空", Toast.LENGTH_SHORT).show();
return false;
}
}
if(name.equals("yanzi") && pswd.equals("123")){
return true;
}else{
Toast.makeText(getApplicationContext(), "用戶名或密碼不符", Toast.LENGTH_SHORT).show();
}
return false;
}
}
</span>
附上出處鏈接:http://blog.csdn.net/yanzi1225627/article/details/38425453
