能力值:
( LV8,RANK:130 )
2 楼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import
frida
import
sys
def
on_message(message, data):
if
message[
'type'
]
=
=
'send'
:
print
(
"[*] {0}"
.
format
(message[
'payload'
]))
else
:
print
(message)
device
=
frida.get_usb_device()
pid
=
device.spawn(
"com.android.providers.downloads.ui"
, activity
=
"com.android.providers.downloads.ui.DownloadList"
)
with
open
(
'AdInfo.js'
) as f:
jscode
=
f.read()
session
=
device.attach(pid)
session.enable_debugger()
script
=
session.create_script(jscode, runtime
=
'v8'
)
script.on(
'message'
, on_message)
print
(
'[*] Running CTF'
)
script.load()
script.exports.init()
device.resume(pid)
sys.stdin.read()
1
2
3
4
5
6
7
8
9
10
11
12
13
rpc.exports = {
init:
function
() {
setImmediate(
function
() {
Java.perform(
function
() {
javaClassInit()
hook_Md5SignData()
hook_getSign()
})
})
}
};
我自己是这样hook的:
1. 挂起方式启动app: device.spawn
2. 读取javascript脚本: with open('AdInfo.js') as f:
3. 启用调试器方便在chrome中调试frida JavaScript脚本: session.enable_debugger()
4. 启用v8引擎方便使用chrome调试
5. 此处可以下python断点,断下之后打开chrome中按f12,选择绿色图标打开nodejs调试器调试JavaScript脚本:script.exports.init()
6. 恢复apk程序运行:device.resume(pid)
最后于 2019-9-25 18:55
被金罡编辑
,原因:
能力值:
( LV8,RANK:130 )
3 楼
关于保存日志: 1.在JavaScript脚本中使用send后on_message(message, data):会收到消息方便保存日志,楼主可以尝试使用这种方法中保存日志。 2.python中使用控制台输出流相关函数来读取控制台所有的输出,你可以查查相资料。 3.你可以运行frida_hook.py > log.txt来保存所有日志。
能力值:
( LV4,RANK:50 )
4 楼
金罡
关于保存日志:
1.在JavaScript脚本中使用send后on_message(message, data):会收到消息方便保存日志,楼主可以尝试使用这种方法中保存日志。
2.python中使 ...
感谢大佬指点。
你说的3种方法我都尝试过了,没什么效果,可能是我代码有问题
我用的是file的写文件。
就是apk启动后,它发了几次消息,然后关闭apk,然后文件一点内容都没有。
我很无奈
能力值:
( LV4,RANK:50 )
5 楼
金罡
关于保存日志:
1.在JavaScript脚本中使用send后on_message(message, data):会收到消息方便保存日志,楼主可以尝试使用这种方法中保存日志。
2.python中使 ...
具体代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import
frida
import
os
import
sys
jscode
=
def
message(message, data):
if
message[
"type"
]
=
=
'send'
:
print
(
"if"
)
print
(
"[*] {0}"
.
format
(message[
'payload'
]))
file
.write(
"[*] {0}"
.
format
(message[
'payload'
]))
else
:
print
(
"else"
)
print
(message)
file
.write(message)
def
execute(
str
):
print
(
str
)
os.system(
str
)
if
__name__
=
=
'__main__'
:
file
=
open
(r
"C:\Users\Xmhwws\Desktop\rizhi.txt"
,
'a'
)
print
(
"文件:"
+
file
.read())
execute(
"adb devices"
)
execute(
"adb shell pm clear 包名"
)
execute(
"adb shell am start -n 包名/启动Activity"
)
process
=
frida.get_remote_device().attach(
'包名'
)
script
=
process.create_script(jscode)
script.on(
"message"
, message)
script.load()
sys.stdin.read()
print
(
"结束"
)
file
.flush()
file
.close()
能力值:
( LV8,RANK:130 )
6 楼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def
__executeCMD(
self
, cmd, printOutput
=
True
):
print
' '
.join(cmd)
if
platform.system()
=
=
"Windows"
:
subprocess.STARTUPINFO.dwFlags |
=
subprocess.STARTF_USESHOWWINDOW
p
=
subprocess.Popen(cmd, stdout
=
subprocess.PIPE, stderr
=
subprocess.PIPE, shell
=
False
)
out, err
=
p.communicate()
if
printOutput:
if
out
is
not
None
:
print
out
if
err
is
not
None
:
print
err
print
if
p.returncode !
=
0
:
raise
Exception(
"Execute CMD error: %d"
%
p.returncode)
return
(out, err, p.returncode)
out, err = p.communicate()
注意代码中的变量out 就是控制台输出结果。
能力值:
( LV2,RANK:10 )
在线值:
7 楼
在js代码中,直接使用frida提供的File保存文件,代码如下 function writeFile(content) { var file = new File("/sdcard/encrypt.txt","a+");//a+表示追加内容,此处的模式和c语言的fopen函数模式相同 file.write(content+"\n"); file.flush() file.close(); }
能力值:
( LV4,RANK:50 )
8 楼
ydscience
在js代码中,直接使用frida提供的File保存文件,代码如下
function writeFile(content) {
var file = new File("/sdcar ...
感谢大佬的指点,测试了一下,可以写入数据。
此外,发现了一件事:
必须先给予apk读写权限才行,否则会报权限不足的异常。
/sdcard是不能写入的,data/user/0/包名这种私有目录可以
最后于 2019-9-30 18:06
被xmhwws编辑
,原因:
能力值:
( LV4,RANK:50 )
9 楼
金罡
def __executeCMD(self, cmd, print ... Thanks(・ω・)ノ
最后于 2020-7-10 06:11
被xmhwws编辑
,原因:
10 楼
xmhwws
ydscience
在js代码中,直接使用frida提供的File保存文件,代码如下
function writeFile(content) {
v ...
楼主你好,就是用了他这段代码,然后就直接报错,frida.InvalidArgumentError: gDBus.Error:re.frida.Error.InvalidArgument: Script(line 16): SyntaxError: unterminated string,请问一下,这个参数就是换成一个字符串也报错。
最后于 2020-1-8 14:08
被wx_宁不知 。编辑
,原因:
11 楼
powershell 可以用的 `| Tee-Object log.log` 保存日志
12 楼
frida -U com.gdufs.xman -l printHookSample1.js > ./libartSymbols.txt