吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 24735|回复: 97
上一主题 下一主题
收起左侧

[Android 原创] JEB动态调试Smali-真机/模拟器(详细,新手必看)

    [复制链接]
跳转到指定楼层
楼主
夜步城 发表于 2022-3-6 14:45 回帖奖励
本帖最后由 夜步城 于 2022-3-7 18:34 编辑



一、环境
1、自行安装adb或者SDK(其实也用的里面的adb功能,SDK太大了,所以建议非安卓开发用户只安装adb就行了),adb安装教程网上很多,考验自己的自学能力!
主要用adb将PC与真机/模拟器连接起来进行调试!
2、自行安装配置JAVA环境




二、工具
1、真机:一般安卓机即可(不关心root与否),这里我使用的是Redmi K40(Android 11)
2、数据线1条
3、Win7及以上 PC机


三、软件
1、PC版模拟器:任意厂家安卓模拟器(这里我使用的是MuMu模拟器
2、安卓版模拟器:VMOS(会员版)
3、PC版安卓修改器:AndroidKiller_v1.3.1(这个主要用来修改软件AndroidManifest.xml里可调试权限android:debuggable="true"),下载地址
4、MT管理器(实现同第3条修改,但是需要会员
5、NP管理器(无需会员实现第3条修改)
6、主角:JEB   版本:jeb-demo-4.2.0
7、待分析APP--debug.apk:https://wwi.lanzoup.com/iGJzi012bscf

四、JEB安装及激活
1、下载地址:https://pan.baidu.com/s/168RjxkVL655ydz0Fwt2Kvw?pwd=vbup
2、解压压缩包,再解压jeb.zip后,将fix文件夹下的jeb.jar复制并替换jeb\bin\app文件夹下。


3、激活:移动好后双击jeb/jeb_wincon.bat打开jeb,此时会弹出激活注册界面,选择Manual Key Genaration,复制许可证数据。如果双击jeb_wincon.bat不能打开jeb,需要检查一下自己java环境是否配置好!


得到许可证数据后,复制下面Python代码到python编译器里,推荐https://tool.lu/coderunner/  这个在线代码网站上运行,代码格式选择Python,把许可证数据粘贴到
[Python] 纯文本查看 复制代码
licdata = ""
的引号里,运行后即可得到KEY值。输入到上图的许可证密匙后即可激活JEB
[Python] 纯文本查看 复制代码
#[url=https://bbs.pediy.com/]https://bbs.pediy.com/[/url]
#!/usr/bin/env python
import os, sys, struct, time, binascii, hashlib

RC4_Key2= 'Eg\xa2\x99_\x83\xf1\x10'

def rc4(Key, inData):
    Buf = ""
    S = range(256)
    K = (map(lambda x:ord(x), Key) * (256 / len(Key) + 1))[:256]
    j = 0
    for i in range(256):
        j = (S[i] + K[i] + j) % 256
        S[i], S[j] = S[j], S[i]
    i, j = 0, 0
    for x in range(len(inData)):
        i = (i + 1) % 256
        j = (j + S[i]) % 256
        S[i], S[j] = S[j], S[i]
        Buf += chr(S[(S[j] + S[i]) % 256] ^ ord(inData[x]))
    return Buf

def Long2Int(longdata):
    lo = longdata & 0xFFFFFFFF
    hi = (longdata >> 32) & 0x7FFFFFFF
    return hi, lo

def KeygenSN(LicenseSerial, MachineID):
    mhi, mlo = Long2Int(MachineID)
    lhi, llo = Long2Int(LicenseSerial)
    hi_Key = (mhi - lhi + 0x55667788) & 0x7FFFFFFF
    lo_Key = (mlo + llo + 0x11223344) & 0xFFFFFFFF
    Z0, = struct.unpack('<Q', struct.pack('<LL', lo_Key, hi_Key))
    Z1 = int(time.time()) ^ 0x56739ACD
    s = sum(map(lambda x:int(x, 16), "%x" % Z1)) % 10
    return "%dZ%d%d" % (Z0, Z1, s)

def ParsePost(buf):
    Info = struct.unpack('<3L2Q4LQ3L', buf[:0x40])
    flag, CRC, UserSerial, LicenseSerial, MachineID, build_type, \
          Ver_Major, Ver_Minor, Ver_Buildid, Ver_Timestamp, \
          TimeOffset, Kclass, Random2 = Info
    SysInfoData = buf[0x40:]
    assert CRC == binascii.crc32(buf[8:]) & 0xFFFFFFFF
    return Info, SysInfoData

def DecodeRc4Str(buf):
    buf = buf.decode('hex')
    i, s = ParsePost(rc4(buf[:8] + RC4_Key2, buf[8:]))
    return i, s

def GetJebLicenseKey():
    licdata = ""
    if licdata:
        i, MachineID = DecodeRc4Str(licdata)
        SN = KeygenSN(i[3], i[4])
        print "JEB License Key:", SN
        return SN

GetJebLicenseKey()
raw_input("Enter to Exit...")



4、设置中文:在菜单栏里Edit->Language->中文(中文),关闭软件重新打开即可为中文界面。



五、导入调试APP
1、在导入前,用第三步中的安卓修改器,修改一下AndroidManifest.xml里可调试权限android:debuggable="true"

编译后签名APP,把APP导入到JEB中,直接默认配置,点确定

当出现这个弹框时,选择“是”

然后JEB就加载好了APP,主要用到了下面圈出来的一些功能!







实用技巧

如果要查看的代码太长,无法看到后面的代码,你会发现这个JEB竟然没有横向滑条??怎么办?有办法,按住shift键+鼠标滚轮,即可代替横向滑条前后查看了,你试试,回来会感谢我的





调试时需要在一些代码处下断点,快捷键是Ctrl+B,如本次需要调试的APP下断点处为




六、实战调试
1、真机调试
把debug.apk安装到安卓机上,这里我使用的是Redmi K40(Android 11),安装后打开APP,当输入正确的密码后下面标签2显示“破解成功”,当然,我这个APP有bug,即使输入正确密码123456也会显示“破解失败”哈哈

然后手机里面打开设置,对着安卓版本狂点几次打开“开发者模式”,然后在开发者模式里面打开“USB调试”

好了,现在用数据线把手机和电脑连接起来,当弹出“是否允许电脑调试手机”之类的提示一定要选择允许!!
此时手机打开debug.apk这个APP,然后在JEB中点那个绿色瓢虫开始调试,当出现下面这个弹框时说明已经连接好了,这个时候选择“附上
出现这些信息时说明已经开始调试了
但是有时候会出现下面这个情况
这是因为没有打开APP的缘故,有两个办法解决,方法一是手动打开调试的安卓APP,方法二用adb shell am start -D -n 包名/主入口点Activity来启动调试APP

好了,接下来我们随便输入数据,让JEB能断下来!
但是在调试过程中,我手机没有root,修改数值不起作用,root的朋友可以试试。但即使不能修改,也可以通过调试来观察代码的走向,来辅助静态修改!!

2、模拟器调试
其实模拟器和真机调试过程一模一样,你会真机了就会模拟器了,无非就是JEB连接模拟器的问题。
如我用的MuMu模拟器,首先打开cmd命令框,输入adb connect 127.0.0.1:7555,即可连接成功。然后要打开模拟器的开发者模式下的USB调试权限!其他PC版模拟器类似!只是端口不一样,如这里端口为7555

这里总结了一些常用的PC版模拟器连接方法!其他的自行搜索!
MuMu模拟器:adb connect 127.0.0.1:7555
夜神模拟器:adb connect 127.0.0.1:62001
雷电模拟器:adb connect 127.0.0.1:5555
逍遥安卓模拟器:adb connect 127.0.0.1:21503
天天模拟器:adb connect 127.0.0.1:6555
海马玩模拟器:adb connect 127.0.0.1:53001

3、VMOS调试:它是手机上的安卓模拟器,创建好模拟器后打开虚拟机设置,选择“高玩设置”(睾wan??hh,没事没事,咱们继续),勾选上“网络ADB”即可用adb连接VMOS了,调试过程同真机调试部分。不过VMOS是需要收费的!



七、完结
        以上就是用JEB进行Smali动态调试的全部过程,相对于Android Studio动态Smali调试来说,我认为JEB更加方便,无需其他额外的插件,同时他的劣势也很明显,工程大了容易卡死,有时调试断点断不下来,还是比较轻量化的一个工具吧!同时他的smali转java代码优化方面也需要提高,有些代码参数看的一头雾水,不过我也没有资格说什么优缺点,开发者才是巨佬。总的来说JEB还是一个非常优秀的工具了,当然,他的价格也不菲啊!一个月好多刀呢   

免费评分

参与人数 23威望 +1 吾爱币 +42 热心值 +22 收起 理由
桐姥爷 + 1 + 1 谢谢@Thanks!
wycshmily + 1 + 1 热心回复!
xhzy + 1 + 1 谢谢@Thanks!
linklin + 1 + 1 谢谢@Thanks!
guo15049434245 + 1 + 1 热心回复!
weixu + 1 + 1 谢谢@Thanks!
wasd3152 + 1 + 1 谢谢@Thanks!
xzzj + 1 热心回复!
uc359599080 + 1 我很赞同!
TeslaLee + 1 + 1 我很赞同!
一哥 + 1 + 1 我很赞同!
Chenda1 + 1 + 1 感谢分享 ,教程简单易懂
qtfreet00 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
玩世不攻 + 2 + 1 谢谢@Thanks!
chinacore_zhao + 1 + 1 用心讨论,共获提升!
wangyftr + 1 + 1 我很赞同!
开心的一逼 + 1 + 1 热心回复!
hehelovehehe + 1 + 1 用心讨论,共获提升!
悠然地2012 + 1 热心回复!
笙若 + 1 + 1 谢谢@Thanks!
way226510 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
北辰没有林安 + 1 + 1 热心回复!
qianshang666 + 2 + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
418 发表于 2022-11-18 22:00
418 发表于 2022-11-18 21:49
jeb报错什么什么\Launcher not found打不开,我用别的地方下载的就不会报错

解决了,我把它移到别的目录就可以打开了,应该是文件路径名的问题
推荐
KGTDM 发表于 2024-8-29 09:40
这是 Python3 的代码,刚学,顺手就改了下

import struct, binascii, time

RC4_Key2_str = 'Eg\xa2\x99_\x83\xf1\x10'
RC4_Key2_bytes = RC4_Key2_str.encode('latin-1')

# RC4_Key2_str = '4567A2995F83F110'
# RC4_Key2_bytes = bytes.fromhex(RC4_Key2_str)

def rc4(key, in_data):
    buf = ""
    s = list(range(256))
    k = (list(key) * (256 // len(key) + 1))[:256]

    j = 0
    for i in range(256):
        j = (s[i] + k[i] + j) % 256
        s[i], s[j] = s[j], s[i]
    i, j = 0, 0
    for x in range(len(in_data)):
        i = (i + 1) % 256
        j = (j + s[i]) % 256
        s[i], s[j] = s[j], s[i]
        buf += chr(s[(s[j] + s[i]) % 256] ^ in_data[x])
    return buf

def parse_post(buf):
    info = struct.unpack('<3L2Q4LQ3L', buf[:0x40])
    flag, CRC, UserSerial, LicenseSerial, MachineID, build_type, \
        Ver_Major, Ver_Minor, Ver_Buildid, Ver_Timestamp, \
        TimeOffset, Kclass, Random2 = info

    assert CRC == binascii.crc32(buf[8:]) & 0xFFFFFFFF
    return info

def long2_int(longdata):
    lo = longdata & 0xFFFFFFFF
    hi = (longdata >> 32) & 0x7FFFFFFF
    return hi, lo

def keygen_sn(license_serial, machine_id):
    mhi, mlo = long2_int(machine_id)
    lhi, llo = long2_int(license_serial)
    hi_key = (mhi - lhi + 0x55667788) & 0x7FFFFFFF
    lo_key = (mlo + llo + 0x11223344) & 0xFFFFFFFF
    z0, = struct.unpack('<Q', struct.pack('<LL', lo_key, hi_key))
    z1 = int(time.time()) ^ 0x56739ACD
    s = sum(map(lambda x:int(x, 16), "%x" % z1)) % 10
    return "%dZ%d%d" % (z0, z1, s)


def decode():
    lic_data = '请填写许可证数据'
    buf = bytes.fromhex(lic_data)

    rc4r = rc4(buf[:8] + RC4_Key2_bytes, buf[8:])

    i = parse_post(rc4r.encode('latin1'))

    sn = keygen_sn(i[3], i[4])
    print(f"JEB License Key: {sn}")

decode()
推荐
 楼主| 夜步城 发表于 2022-3-6 20:09 |楼主
1123791755 发表于 2022-3-6 20:04
老哥python代码运行不了

可能是你的python缺少库,你可以直接把代码复制到https://tool.lu/coderunner/  这个在线代码网站上运行,代码格式选择Python
3#
Gacker719 发表于 2022-3-6 15:46
        用心讨论,共获提升!
4#
v5le0n9 发表于 2022-3-6 16:32
我想问下到底怎么才能真机连上电脑,我的是Redmi K30,网上教程也找过了就是连不上,在电脑安装小米助手也连不上,楼主求解
5#
 楼主| 夜步城 发表于 2022-3-6 16:53 |楼主
v5le0n9 发表于 2022-3-6 16:32
我想问下到底怎么才能真机连上电脑,我的是Redmi K30,网上教程也找过了就是连不上,在电脑安装小米助手也 ...

你手机连电脑上可以进行数据传输吗?还有打开USB调试权限,第一次连接电脑时手机会弹出允许调试确认界面
6#
sky2021 发表于 2022-3-6 16:57
非常详细,感谢分享,正需要
7#
q5269174 发表于 2022-3-6 17:29
很细致的讲解,受教,研究下
8#
v5le0n9 发表于 2022-3-6 17:36
夜步城 发表于 2022-3-6 16:53
你手机连电脑上可以进行数据传输吗?还有打开USB调试权限,第一次连接电脑时手机会弹出允许调试确认界面

我知道了,是数据线的问题
9#
 楼主| 夜步城 发表于 2022-3-6 17:39 |楼主
v5le0n9 发表于 2022-3-6 17:36
我知道了,是数据线的问题

哈哈,能发现问题就行,我一开始想的是不是数据线不行,因为之前也遇到过类似情况
10#
1123791755 发表于 2022-3-6 20:04
老哥python代码运行不了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-23 14:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表