破解小游戏<打飞机>

apk下载: http://pan.baidu.com/s/1mimoGAk

工具下载:https://down.52pojie.cn/Tools/Android_Tools/
这个游戏好像只能在模拟器上运行.
先运行观察一下:
这里写图片描述

用AndroidKiller反编译,因为我们要改分数,所以
在工程搜索里搜索score:
这里写图片描述

观察到Lcom/k/feiji/FeiJi_Play这个Activity
很可疑,打开JEB反编译feiji.apk定位到Lcom/k/feiji/FeiJi_Play,
然后快捷键Q反汇编.
这里写图片描述

注意到_Get_Score这个变量,而且还是整型,怀疑分数都保存在这个变量里面,在AndroidKiller里搜索这个变量:
这里写图片描述

主要到这个Activity里面有个ChangeScore()函数,怀疑就是这个函数改变的分数
这里写图片描述

修改这个函数,让我们无论击落什么飞机,都加2000分
这里写图片描述

最后Ctrl + S保存我们的修改,然后
编译运行,发现成功了。
这里写图片描述

接下来修改程序,使我们无论什么时候都能发射两颗子弹,
注意到发射两颗子弹拿到的是个蓝色的降落伞,而且程序里有Blue_shot_change这个变量,怀疑是这个变量控制是否发射两颗子弹:
这里写图片描述

接下来去AndroidKiller搜索这个变量,看看什么代码改变了它:
这里写图片描述

上面看到只有一个地方读取了这个变量,我把它的值赋值为1,就是true,
让它一直发射两颗子弹,
Ctrl+S保存,编译运行,发现修改成功.
这里写图片描述

其实还有一个_Invincible(无敌的)变量,我这个变量赋值为1就可以达到无敌的状态,这里就直接给代码了。
这里写图片描述
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个基于C++面向对象的小游戏飞机的示例代码。以下是一个简单的实现方案: ```c++ #include <iostream> #include <vector> #include <time.h> #include <conio.h> #include <windows.h> using namespace std; const int WIDTH = 50; // 游戏窗口宽度 const int HEIGHT = 20; // 游戏窗口高度 const int ENEMY_NUM = 5; // 敌机数量 const int BULLET_NUM = 3; // 子弹数量 class GameObject { public: int x, y; // 物体的坐标 char shape; // 物体的形状 GameObject(int _x, int _y, char _shape) { x = _x; y = _y; shape = _shape; } virtual void show() = 0; // 显示物体 virtual void update() = 0; // 更新物体 virtual bool isCollide(GameObject& other) = 0; // 判断是否碰撞 }; class Plane : public GameObject { public: int life; // 飞机的生命值 int speed; // 飞机的速度 Plane(int _x, int _y, int _life, int _speed, char _shape) : GameObject(_x, _y, _shape), life(_life), speed(_speed) {} void show() override { cout << shape; } void update() override { if (_kbhit()) // 检测是否有按键按下 { char ch = _getch(); switch (ch) { case 'a': x--; break; case 'd': x++; break; case 'w': y--; break; case 's': y++; break; } } } bool isCollide(GameObject& other) override { if (x == other.x && y == other.y) { life--; return true; } return false; } }; class Enemy : public GameObject { public: int speed; // 敌机的速度 Enemy(int _x, int _y, int _speed, char _shape) : GameObject(_x, _y, _shape), speed(_speed) {} void show() override { cout << shape; } void update() override { y += speed; if (y >= HEIGHT - 1) // 敌机飞出窗口,回到顶部 { y = 0; x = rand() % WIDTH; } } bool isCollide(GameObject& other) override { if (x == other.x && y == other.y) { return true; } return false; } }; class Bullet : public GameObject { public: int speed; // 子弹的速度 Bullet(int _x, int _y, int _speed, char _shape) : GameObject(_x, _y, _shape), speed(_speed) {} void show() override { cout << shape; } void update() override { y -= speed; if (y < 0) // 子弹飞出窗口,销毁 { x = -1; y = -1; } } bool isCollide(GameObject& other) override { if (x == other.x && y == other.y) { x = -1; y = -1; return true; } return false; } }; class Game { public: Plane* plane; // 玩家控制的飞机 vector<Enemy*> enemies; // 敌机列表 vector<Bullet*> bullets; // 子弹列表 Game() { srand(time(NULL)); plane = new Plane(WIDTH / 2, HEIGHT - 2, 3, 1, 'A'); // 创建敌机 for (int i = 0; i < ENEMY_NUM; i++) { int x = rand() % WIDTH; int y = rand() % (HEIGHT / 2); int speed = rand() % 2 + 1; Enemy* enemy = new Enemy(x, y, speed, 'V'); enemies.push_back(enemy); } // 创建子弹 for (int i = 0; i < BULLET_NUM; i++) { Bullet* bullet = new Bullet(-1, -1, 2, '.'); bullets.push_back(bullet); } } ~Game() { delete plane; for (int i = 0; i < enemies.size(); i++) { delete enemies[i]; } for (int i = 0; i < bullets.size(); i++) { delete bullets[i]; } } void show() { system("cls"); // 清空控制台屏幕 // 显示飞机 plane->show(); // 显示敌机 for (int i = 0; i < enemies.size(); i++) { enemies[i]->show(); } // 显示子弹 for (int i = 0; i < bullets.size(); i++) { bullets[i]->show(); } // 显示分数和生命值 cout << endl; cout << "Score: " << (ENEMY_NUM - enemies.size()) << endl; cout << "Life: " << plane->life << endl; } void update() { // 更新飞机 plane->update(); // 更新敌机 for (int i = 0; i < enemies.size(); i++) { enemies[i]->update(); } // 更新子弹 for (int i = 0; i < bullets.size(); i++) { bullets[i]->update(); } // 处理碰撞 for (int i = 0; i < enemies.size(); i++) { if (plane->isCollide(*enemies[i])) // 玩家飞机与敌机碰撞 { if (plane->life <= 0) { cout << "Game Over!" << endl; exit(0); } } for (int j = 0; j < bullets.size(); j++) { if (bullets[j]->isCollide(*enemies[i])) // 子弹与敌机碰撞 { delete enemies[i]; enemies.erase(enemies.begin() + i); break; } } } // 发射子弹 if (_kbhit()) { char ch = _getch(); if (ch == ' ') { for (int i = 0; i < bullets.size(); i++) { if (bullets[i]->x == -1 && bullets[i]->y == -1) { bullets[i]->x = plane->x; bullets[i]->y = plane->y - 1; break; } } } } Sleep(50); // 控制帧率 } }; int main() { Game game; while (true) { game.show(); game.update(); } return 0; } ``` 这个小游戏飞机是基于面向对象的思想实现的,其中定义了 `GameObject`、`Plane`、`Enemy` 和 `Bullet` 四个类,分别代表游戏中的游戏对象。`Plane` 类表示玩家控制的飞机,`Enemy` 类表示敌机,`Bullet` 类表示子弹。`GameObject` 类是这三个类的基类,抽象了游戏对象的公共属性和行为。 在 `Game` 类中,创建了一个玩家飞机、五架敌机和三个子弹的对象,并在 `update` 方法中处理游戏逻辑,包括更新游戏对象的位置、检测碰撞、发射子弹等操作。在 `show` 方法中,将游戏对象显示在控制台上,包括玩家飞机、敌机、子弹、分数和生命值。 在 `main` 函数中,创建了一个 `Game` 对象,并在一个无限循环中调用 `show` 和 `update` 方法,实现了游戏的运行。 当玩家飞机与敌机碰撞时,玩家飞机的生命值会减一,当生命值小于等于零时游戏结束。当子弹与敌机碰撞时,敌机会被销毁,并增加分数。玩家可以通过空格键发射子弹。 这只是一个简单的示例,您可以根据自己的需要对代码进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值