• .Title|raw

    一加禅定模式App正确的打开方式


    起因: 想要好好学习天天向上, 但是总是想玩手机,无意间发现一加手机上有这个功能, 可以锁死手机一段时间, 但是时间太少了, 20 - 60 分钟 不等, 太不给力. 所以就动手写了个扩展时间的插件.   需要的东西: 1.开发者助手 https://www.coolapk.com/apk/com.toshiba_dealin.developerhelper 2.Jadx https://github.com/skylot/jadx/releases 3.Xposed框架   使用开发者助手分析界面得到 选择禅定时间界面的点击事件 选择时间的控件ID是 点击开始的按钮控件

  • .Title|raw

    逆向之记<狙击行动3D:代号猎鹰>存档修改器的实现


    又名,打手枪的正确姿势?! 依旧是存档修改.果真,一个人的时候就是闲的蛋疼.前两天下载了这款游戏,但是玩一玩就鸡儿要充值,要会员.还有鸡儿体力限制,想肝都不行.对我来说 也懒得肝,搞不定就卸载游戏 不玩了.游戏是IOS版本的.细看了下是Unity3D制作的游戏.我的想法是看看有没有安卓版本的.在看看是不是C#Dll形式存在的代码.如果是这样 那就搞, 如果是il2Cpp形式的 就放弃.懒得费时看C++汇编了准备1.一个越狱的手机2.VS3.脑子Android版本下载地址:http://www.pc6.com/azyx/604623.html发现正合心意. 将其解压拖入ILSpy发现

imxz | 发布于 2019-08-25 21:05:14 | 阅读量 452 |
发布于 2019-08-25 21:05:14 |

起因:

想要好好学习天天向上,

但是总是想玩手机,无意间发现一加手机上有这个功能,

可以锁死手机一段时间,

但是时间太少了, 20 - 60 分钟 不等, 太不给力.

所以就动手写了个扩展时间的插件.

 

需要的东西:

1.开发者助手

https://www.coolapk.com/apk/com.toshiba_dealin.developerhelper

2.Jadx

https://github.com/skylot/jadx/releases

3.Xposed框架

 

使用开发者助手分析界面得到 选择禅定时间界面的点击事件

选择时间的控件ID是

点击开始的按钮控件ID

使用Jadx 将Apk直接拖入分析

上面设置了两个点击事件,

一个是弹出选择时间的Dialog 一个是开始禅定

 我们进入MainActivity.this.a(); 方法

进入 选择列表中的时间那个相关的方法体中

aVar.a((int) R.array.preferences_duration_labels, i, (OnClickListener) new OnClickListener() {

可以看到获取列表内容的方法

 

这样 我们Hook 系统方法

getResources().getStringArray(R.array.preferences_duration_values);

getResources().getTextArray(i);

根据Int值来判断是否是需要的值,

然后返回我们需要的列表,就能达到我们需要的多定义一些时间的功能.

 

Xp插件编写教程不做过多赘述,可看下面这几个入门教程

https://www.52pojie.cn/thread-688466-1-1.html

https://blog.csdn.net/niubitianping/article/details/52571438

https://www.jianshu.com/p/8fbf9e88eb54

 

我们找到R.array中的这两个ID

public static final int preferences_duration_labels = 2130903046;
public static final int preferences_duration_values = 2130903047;

 

package cn.imxz.xpbm;

import d
继续阅读
imxz | 发布于 2019-06-21 22:42:51 | 阅读量 326 |
发布于 2019-06-21 22:42:51 |
工作上可能需要用到 C++ 与 Lua 交互 . 所以就想找一个能联调的方法. 百度很久也是没有人给出想要的方法. 所以研究了一下,踩了一些坑,终于是找到了办法.
继续阅读
imxz | 发布于 2019-02-08 19:03:08 | 阅读量 396 |
发布于 2019-02-08 19:03:08 |

又名,打手枪的正确姿势?!
 依旧是存档修改.
果真,一个人的时候就是闲的蛋疼.
前两天下载了这款游戏,
但是玩一玩就鸡儿要充值,要会员.
还有鸡儿体力限制,想肝都不行.
对我来说 也懒得肝,搞不定就卸载游戏 不玩了.

游戏是IOS版本的.
细看了下是Unity3D制作的游戏.
我的想法是看看有没有安卓版本的.
在看看是不是C#Dll形式存在的代码.
如果是这样 那就搞, 如果是il2Cpp形式的 就放弃.
懒得费时看C++汇编了

准备
1.一个越狱的手机
2.VS
3.脑子

Android版本下载地址:
http://www.pc6.com/azyx/604623.html
发现正合心意.

将其解压拖入ILSpy发现 主要的 C#Dll Assembly-CSharp.dll无法被正确解析,
无效的COFF头部.
百度+谷歌了一下. 说用 dnSpy 反编译工具 就行了.
现在我们可以看游戏代码了,
然后呢 我们定位 游戏存档.
存档的位置在 程序的数据目录下的Documents目录下 名字叫 savegame.bin

其中 savegame.bin.bkp 是上一次的备份.
后续的分析中可以看到

 

将C# Dll 解压出来后

全部拖入 dnSpy 中 反编译 然后搜索 savegame


先说一下,这个游戏是有云端存档的.就是存档会发送到云端.

同账号可以互相拉取存档.

所以这里可以看到 有上传存档的地方.

这个并不在研究之列,因为比较麻烦 暂时还不能进行验证.

我在一家淘宝店中看到的,

那他用的应该就是文档上传以及下载

 

跟入 App.SaveFilePath 可以看到它在拼接 存档地址

跟入Save 可以看到 它在地址后面主动拼接了bin, 其中还有个加密的key

 

继续跟入

 

  发现它开始写存档了

先是写入了4字节的头部,

然后写入占位4字节

然后写入是否加密存档.

这里 我们 可以主动的 将 SaveStream 它自己实现的流 类 拷贝出来 

在VS中 建立 C# 控制台工程 还原相关联的所有类即可

继续跟入

 它就在写入数据了

但是这里要注意.

这个自定义的流 在写入的时候 将会 直接进行 RC4 加密 

我们这个时候将关联的所有对象 还原.

就差 秘钥了

从代码上看

它写入的是 CRC值 ^ 秘钥的 UINT型 但是 我在这里被忽悠了,

它的秘钥长度是很长的,但是他取出来的只是4个长度,

如果反推 则只能的到 4字节的秘钥 , 并非完全的秘钥,

我们重点需

继续阅读
imxz | 发布于 2019-02-08 18:39:32 | 阅读量 394 |
发布于 2019-02-08 18:39:32 |

又名,打飞机的正确姿势!


前几天看到 IOS 12.1.2 有大佬放出越狱漏洞,这两天各个大佬都开始实现工具.
正好今天(昨天了)安装上了 文件管理器,可以访问和修改安装的程序数据目录. 
嘿嘿,正好前两天下了个游戏 消灭病毒 .
就是打飞机游戏.不过比较肝.我也不是喜欢肝的人.
只好看看能不能修改存档变得不用肝了!

准备工具:
1.一台越狱手机 
2.IPA 砸壳 工具
(htt
继续阅读
imxz | 发布于 2019-02-08 18:38:18 | 阅读量 522 |
发布于 2019-02-08 18:38:18 |
1.起因
比较无聊刷今日头条,无意中看到有小编推荐, 18元 -> 限免的单机 地牢防御.
30多MB的游戏玩起来也挺好玩的.
游戏有个功能,可以同步存档到远程服务器上,这个服务器应该是苹果的.
既然是可以同步存档,那就有一种可能,这个存档在上传的过程中被修改。
那我同步下来的时候就会是修改后的,那岂不是美滋滋。
2.开始操作
准备工具:
1.一台越狱的IOS手机,系统版本不限,且安装了Fil
继续阅读
imxz | 发布于 2018-12-21 14:24:19 | 阅读量 791 |
发布于 2018-12-21 14:24:19 |


开始学习IOS逆向踩了很多坑,

尤其是使用Theos编写Tweak插件的时候需要Hook一些地方,

查阅了很多资料,整理了以下几点

环境:

IOS11.3.1

MAC OS

THEOS

需要了解的

Logos语法 请自行百度

1.对地址函数的Hook

//引入一些必要的头文件
#import "substrate.h"
#import <Foundation/Foundation.h>
#import <dlfcn.h>
#import <mach-o/dyld.h>
//我要HOOK的地址是 静态下的 0x1000083B0 
//它有一个参数
//先声明一个旧的函数(名称随意)(这是个解密函数地址)
char* (*Old_1000083B0)(const char* base64);
//然后实现一个新的函数(名称随意)
//内容根据情况编写
char* New_1000083B0(const char* base64)
{
  NSString * str_q = [NSString stringWithUTF8String:base64];
  NSLog(@"IMXZ_Q:%@",str_q);
  char* ret = Old_1000083B0(base64);
  NSString * str_h = [NSString stringWithUTF8String:ret];
  NSLog(@"IMXZ_H:%@",str_h);
  return ret;
}

//Logos语法
%ctor {
    //获取动态时的函数地址
    unsigned long base_1000083B0 = _dyld_get_image_vmaddr_slide(0) + 0x1000083B0;
    //替换需要Hook的函数
    MSHookFunction(
    (void *)base_1000083B0,
    (void *)&New_1000083B0,
    (void **)&Old_1000083B0);

}


2.对C函数的Hook

#import "substrate.h"
#import <Foundation/Foundation.h>
#import <dlfcn.h>
#import <mach-o/dyld.h>

//
继续阅读
imxz | 发布于 2018-12-18 14:03:22 | 阅读量 1042 |
发布于 2018-12-18 14:03:22 |

首先,

使用THEOS创建 [2.] iphone/application_modern 项目.

剩下的内容分为以下几步.

1. main.m 中增加代码.

//请注意这个是针对 coolstar的electra越狱(绝大大部分越狱用户使用的都是electra). 而非pwn20wnd的unc0ver [https://github.com/pwn20wndstuff/Undecimus]
//原因请参考 https://github.com/coolstar/electra/blob/master/docs/getting-started.md

#import "XYAppDelegate.h"
#include <dlfcn.h>

void patch_setuidandplatformize()
{
	  void* handle = dlopen("/usr/lib/libjailbreak.dylib", 1);
	  if (handle)
		{
			dlerror();
			typedef void (*fix_setuid_prt_t)(pid_t pid);
			fix_setuid_prt_t ptr_setuid = (fix_setuid_prt_t)dlsym(handle, "jb_oneshot_fix_setuid_now");
			typedef void (*fix_entitle_prt_t)(pid_t pid, uint32_t what);
			fix_entitle_prt_t ptr_entitle = (fix_entitle_prt_t)dlsym(handle, "jb_oneshot_entitle_now");
			if(!dlerror())
			{
					ptr_setuid(getpid());
			}
			setuid(0);
			setgid(0);
			setuid(0);
			if(!dlerror())
			{
				ptr_entitle(getpid(),2LL);
			}
		}
}

int main(int argc, char *argv[]) {
	patch_setuidandplatformize();
	@autoreleasepool {
继续阅读