Android逆向分析学习与研究(2)————通过“轮盘赌”简要看看smali的基本流程控制

1.我写的一个简单的Andriod小Demo,“轮盘赌!”。

  1. package com.example.forreversedemo;
  2. import java.util.Random;
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.view.View.OnClickListener;
  7. import android.widget.Button;
  8. import android.widget.Toast;
  9. public class MainActivity extends Activity implements OnClickListener{
  10. private Button button; //按钮
  11. public int count = 0; //计数
  12. public int[] bullet =new int[]{0,0,0,0,0,0}; //用数组来表示弹夹,没子弹时数组元素为0,有子弹时,数组元素之一随机赋值为1
  13. public int a;
  14. @Override
  15. protected void onCreate(Bundle savedInstanceState) {
  16. super.onCreate(savedInstanceState);
  17. setContentView(R.layout.activity_main);
  18. button= (Button) findViewById(R.id.start_count);
  19. button.setOnClickListener(this);
  20. }
  21. @Override
  22. public void onClick(View arg0) {
  23. switch(arg0.getId()){
  24. case R.id.start_count:
  25. Random random = new Random();
  26. //第一次点击按钮把第一颗子弹上膛
  27. if(count == 0){
  28. MessageBox("子弹已上膛!");
  29. bullet[random.nextInt(6)] = 1;
  30. count++;
  31. break;
  32. }
  33. //第2次点击,实现转动轮盘至停止
  34. if(count == 1){
  35. int count1 = -1;
  36. for (int i = 0;i<random.nextInt(6)+60000; i++) {
  37. count1++;
  38. if(count1 == 6)count1 = 0; //循环遍历弹夹,也可以用while和for来做,这里为分析方便起见
  39. a = bullet[count1];
  40. }
  41. MessageBox("抠动扳机开火吧!");
  42. count++;
  43. break;
  44. }
  45. //第3次点击就是开火!
  46. if(count == 2){
  47. if(a == 1){
  48. MessageBox("啪!爆头!");
  49. count = 0;
  50. }else{
  51. MessageBox("你真幸运!");
  52. count = 0;
  53. }
  54. }
  55. break;
  56. default:
  57. break;
  58. }
  59. }
  60. //弹出提示,额,这个函数名很熟悉吧,WinAPI啊,开个玩笑
  61. public void MessageBox(String text){
  62. Toast.makeText(this, text, Toast.LENGTH_LONG).show();
  63. }
  64. }

2.逆向这个Demo!

唯一的一本书:非虫大大的书《Android软件安全与逆向分析》

  • 文章:我转的文章:apk反汇编之smali语法(转)
    其中非虫的书的第三章和我转的那篇文章对于smali的语法进行了详细的介绍,当然你也可以下个官方文档看。总之,初学者在看下面的smali代码时,一定要对照参考我给你推荐的,下面的注释,在我看来,我写的还算详细但避免不了疏漏和有争议的地方,希望大家分析代码时,能多加思考,更欢迎大家的建议和批评指正。
  • 得到smali代码如下
    MainActivity.smali (表示在用MK写博客时,贴smali代码用ruby格式最好^_^,有没有更好的方法呢

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2014年11月22日
    下一篇 2014年11月22日

    相关推荐