密码学进阶
MD5MD5对明文的处理C实现MD5算法的使用MD5.h#pragma once//// Created by Administrator on 2021-07-28.////在一些情况下,反斜杠 \ 可以用作行连接符,用于将代码行连接在一起。换句话说,如果你想在一行代码上换行而不终止该行,可以在行末添加一个反斜杠。#ifndef HOOKDEMO_MD5_H#define HOOKDEMO_MD5_Htypedef struct { unsigned int count[2]; unsigned int state[4]; unsigned char buffer[64];} MD5_CTX;#define F(x,y,z) ((x & y) | (~x & z))#define G(x,y,z) ((x & z) | (y & ~z))#define H(x,y,z) (x^y^z)#define I(x,y,z) (y ^ (x | ~z))#define ROTATE_LEFT(x,n) ((x <&l ...
NDK开发
NDK介绍
NDK与Java工程的区别
第一个NDK工程
so中常用的Log输出
NDK多线程简介
JNI_OnLoad
JavaVM
JNIEnv
so相关的几个概念
so函数注册
so之间的相互调用
so路径的动态获取
通过jni创建Java对象
//1、找类//2、得到方法id//3、创建对象jclass clazz = env->FindClass("com/xiaojianbang/ndk/NDKDemo");jmethodID methodID = env->GetMethodID(clazz,"<init>","()V");jobject ReflectDemoOjb = env->NewObject(clazz,methodID);LOGD("ReflectDemoObj %p",ReflectDemoObj);
通过jni访问Java属性
jmethodID methodID = env->GetMethodID(clazz,"<in ...
密码学
h5App的逆向
PC端的谷歌浏览器进入chrome://inspect/#devices
hook修改WebView为可调试Java.perform(function(){ var WebView = Java.use('android.webkit.WebView'); WebView.$init.overload('android.content.Context').implementation = function(a){ console.log("WebView.$init is called!"); var retval = this.$init(a); this.setWebContentsDebuggingEnabled(true); return retval; } WebView.$init.overload('android.content.Context& ...
免root使用frida
Frida自吐算法演示Java.perform(function () { function showStacks() { console.log( Java.use("android.util.Log") .getStackTraceString( Java.use("java.lang.Throwable").$new() ) ); } function logOutPut(msg) { Java.use("android.util.Log").d("xiaojianbang", "frida inject: " + msg); } var ByteString = Java.use("com.android.okhttp.okio ...
objection
objection的安装
objection的使用
objection的插件
frida
静态方法和实例方法的hook
不需要区分修饰符,也不需要区分静态和实例方法,hook代码的写法都是一样的
得到Money类对象
var money = Java.use("com.xiaojianbang.hook.Money");
hook实例方法
money.getInfo.implementation = function(){ var result = this.getInfo(); console.log("money.getInfo result:",result); return result;}
hook静态方法
money.setFlag.implementation = function(a){ console.log("money.setFlag parmm:",a); return this.setFlag(a);}
函数参数和返回值的修改var money = Java.use("com.xiaojianbang. ...
关键代码快速定位
hook一些重要函数Java.perform(function () { function showStacks() { console.log( Java.use("android.util.Log") .getStackTraceString( Java.use("java.lang.Throwable").$new() ) ); } // var hashMap = Java.use("java.util.HashMap"); // hashMap.put.implementation = function (a, b) { // if(a.equals("username")){ // showStacks(); // co ...
嘟嘟牛算法复现
;(function (root, factory) { if (typeof exports === "object") { module.exports = exports = factory(); } else if (typeof define === "function" && define.amd) { define([], factory); } else { root.CryptoJS = factory(); }}(this, function () { var CryptoJS = CryptoJS || (function (Math, undefined) { var create = Object.create || (function () { function F() { ...
frida hook的使用
使用frida-hook分析嘟嘟牛加密方法首先使用PKiD查壳,发现没有加壳
查找加密方法时,发现有两个加密函数,使用frida-hook分析走了哪一个加密函数
frida-hook脚本
//如果是Java hook代码都放到Java.perform中Java.perform(function () { var JsonRequest = Java.use("com.dodonew.online.http.JsonRequest"); console.log("JsonRequest:",JsonRequest); JsonRequest.paraMap.implementation = function (a) { console.log("paraMap",a); this.paraMap(a); } JsonRequest.addRequestMap.overload('java.util.Map', ...
JS快速入门
JavaScript介绍JavaScript是一种轻量级的脚本语言。所谓”脚本语言”,指的是它不具备开发操作系统的能力,而是用来编写其他大型应用程序的”脚本”。
JS的语句标识符语句JavaScript程序的单位是行(line),也就是一行一行的执行。一般情况下,每一行就是一个语句
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title></head><body> <script> var num = 10; var username = "iwen"; ...

