- 博客(24)
- 资源 (3)
- 收藏
- 关注
原创 sha1算法源码c版
sha1算法源码c版#include <stdio.h>#include <stdlib.h>#define SHA1_ROTL(a,b) (SHA1_tmp=(a),((SHA1_tmp>>(32-b))&(0x7fffffff>>(31-b)))|(SHA1_tmp<<b))#define SHA1_F(B,C,D,t) ((t<40)?((t<20)?((B&C)|((~B)&D)):(
2016-07-03 21:58:28
3652
原创 opensslsha1算法源码c++版
opensslsha1算法源码c++版#include <iostream> #include <openssl/sha.h> #include <openssl/crypto.h> // OPENSSL_cleanse #pragma comment(lib, "libeay32.lib") using namespace std; const char *orgSt
2016-07-03 21:57:49
1734
原创 基于sha1算法的登陆协议分析
1、整体分析登陆抓包分析如下: 其中密码为:123456 可以看到对密码进行了加密,最后添加了封包签名加密2、加密算法java层分析定位到java关键代码如下:public void loginCellFromRemote(final String paramString1, final String paramString2, String paramString3, final IUserM
2016-07-03 21:55:29
757
原创 descbc算法java版
descbc算法java版import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.*; import sun.misc.*; /** * DES encryption algorithm, p
2016-07-03 20:40:26
614
原创 base64算法源码c版
base64算法源码c版#include <stdio.h> //注意哦,VC中""是当前路径,<>是系统路径 #include <windows.h> const char BASE_CODE[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; //base码//编码,参数:要编码的字符串指针
2016-07-03 20:39:28
2043
原创 openssldescbc算法c++版
openssldescbc算法c++版#include <iostream> #include <string> #include <vector> #include <openssl/des.h> #include "cryptotest.h" using namespace std; //STL库static unsigned char cbc_iv[8] = {'0', '
2016-07-03 20:38:36
1161
原创 opensslmd5算法源码c++版
#include "stdafx.h" #include <iostream> #include <string> #include <vector> #include <cstdio> #include <iomanip> #include <stdlib.h> #include <openssl/md5.h> #include "cryptotest.h" usi
2016-07-03 20:37:10
962
原创 APP登陆协议之Native层分析
1、整体分析首先登陆,抓包分析,如下: 其中密码为:123456 可以看到,对密码进行了加密。2、加密算法java层分析定位到java代码如下: protected void buildSignRequestParams(String paramString, HashMap<String, String> paramHashMap) { paramHashMap.put("use
2016-07-03 20:35:07
4845
原创 APP登陆协议的分析
1、前言最近暴雨不断,只能宅在家里,闲来无事,写写文章2、整体分析通过抓包工具,简单看看登陆封包内容,如下: 其中密码为123456 登陆,封包如下: 居然是明文传输密码和账号,不止如此,传输居然采用http,看到这,这款企业级的app安全性,可以想象,根本毫无安全可言。另外,可以看到封包最后有个签名sign,如果我们把sign算法搞定,那岂不是,可以写自动注册机了。3、登陆签名算法分析搜索”
2016-07-03 13:39:50
5424
原创 Android studio动态调试smali
最近有点时间,写些基础点的文章,记录下。1、工具a、android killer b、ideasmali插件。下载地址2、安装插件和反编译工程a、下载smalidea-0.03.zip插件,并安装。 b、利用android killer反编译apk,获取的反编译后的project3、导入工程a、android studio导入project。具体为:选择File–>New–>import pro
2016-07-03 13:06:12
3343
原创 对某APP的逆向之旅(3)
书接上回,本次对前面解密后的so进行分析 来到start函数 进入主函数 sub_9960首先创建本地socket,用于通信,然后while循环中,不断读取java层的消息,执行对应的功能函数。 创建socket的代码如下:void __fastcall sub_9960(int a1, void **a2){ ...... ...... port = atoi(&s); v6
2016-06-12 14:07:02
706
原创 对某APP的逆向之旅(2)
接着上面的分析过程,继续 本次分析下java层和ndk通信的框架 首先,执行上一节分析中解密的文件,如下: 继续分析:private static int a(Context context, String arg13) { int v9 = 3; int v4 = -1; int v1 = 0; Runtime.getRunti
2016-06-03 12:35:26
786
原创 对某APP的逆向之旅(1)
最近在研究游戏辅助相关的技术,因此有了下面的文章。 前面的准备工作,再此就不多介绍了,直接进入主题。 下面的代码是反编译后,看到的 static { System.loadLibrary("encode"); } public static int a(Context arg4) { if(Thread.currentThread().getN
2016-06-02 17:56:29
826
原创 通过adb获取手机信息
整理如下:1、获取手机系统信息( CPU,厂商名称等)adb shell "cat /system/build.prop | grep "product""2、获取手机系统版本adb shell getprop ro.build.version.release3、获取手机系统api版本adb shell getprop ro.build.version.sdk4、获取手机设备型号adb -d
2016-05-17 19:35:37
26351
7
原创 玩转Android studio 插件开发、测试、JCenter库发布(4)
前面几节讲解了android studio 依赖库和插件的开发。本节主要讲解在android studio中插件的测试。 插件的测试分为本地测试和在线测试本地测试:将插件安装到本地Maven仓库,利用本地仓库测试 在线测试:将插件发布到JCenter仓库,在工程中直接引用1、本地测试为了方便测试逻辑功能,一般会将插件安装到本地仓库,进行测试。例如上一节中最后的使用,也是安装到了本地仓库中测试的。
2016-05-17 18:46:13
563
原创 玩转Android studio 插件开发、测试、JCenter库发布(3)
本节将学习android studio 插件的开发。 插件的开发,可以采用两种方式:1、利用android stuido和groovy开发插件利用android studio开发插件和前面依赖库的开发类似,唯一不同的是需要建立如下的目录: – resources | —– META-INF | —– —-gradle-plugins | —– ———-插件名称.
2016-05-17 16:35:45
600
原创 玩转Android studio 插件开发、测试、JCenter库发布(2)
上一节,我们以实例的方式,讲解了android studio依赖库的开发过程,但是,似乎还没有完成。 是的,还缺少插件的生成、发布和使用。下面我们便接着上一节,继续讲解依赖库的生成、发布和使用依赖库的发布,是在build.gradle构建脚本中处理的。 在讲解构建脚本之前,我们先说下JCenter库的申请等前期准备工作。1、注册账号 在https://bintray.com/上注
2016-05-13 18:34:09
582
原创 玩转Android studio 插件开发、测试、JCenter库发布(1)
在安卓项目开发中,为了测试方便,将常用的测试函数,写成插件(或者模块),发布到JCenter仓库。这样带来的好处,避免了维护的繁琐,取而代之的是只需要一句简单的引用即可。下面将分成android studio依赖库开发、依赖库的发布、android studio插件开发发布和插件的本地测试三个部分进行讲解。一、android studio依赖库开发和发布首先,需要说明的是“依赖库”这个名字是我自己起
2016-05-13 17:44:58
462
原创 Missing Gradle Project Information
在使用Android studio 生成签名包的时候,经常会遇到以下问题。Missing Gradle Project Information. Please check if the IDE successfully synchronized its state with the Gradle Project Model解决方案: tools > Android > Sync Proje
2016-05-13 16:44:35
20000
翻译 利用代码动态修改log4j
利用代码动态修改log4j在项目中,对log的输出有多种多样的要求,下面具体分析一下动态log文件名输出的。:一、按照用户ID来生成log,可以根据每个用户ID来动态生成logger。代码如下:import org.apache.log4j.Level;import org.apache.log4j.Logger;import org.apache.log4j.PatternLayout;im
2016-05-13 12:47:43
2470
原创 四 单例模式
单例模式定义单例模式是一种对象创建型模式。使用单例模式,可以保证一个类只生成唯一的实例对象。也就是说,在整个程序空间中,该类只存在一个实例对象。意义提供对同一种资源的共享,节省创建对象的资源,提高效率。为了只能创建一个类的实例,可以将类的构造函数私有化,并提供公共的接口,对类实例对象进行访问。单列模式有分为懒汉式和饿汉式。1、懒汉式在类初始化时,便创建对象代码如下:public class P
2016-04-26 22:23:31
296
原创 三 抽象工厂模式
抽象工厂模式定义:抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定类实例的具体类型的情况下,能够创建多个类实例族的类实例对象。例如:以上一章节的例子为例。假如Apple又分为Apple1和Apple2,Banana也分为Banana1和Banana2。我们希望对每类水果的每种类型区分, 并可以创建多个水果实例。此时,便可以考虑抽象工厂模式,即:对类实例进一步抽象,对每一种类实例族进行创建
2016-04-26 21:32:00
268
原创 二 工厂方法模式
工厂方法模式定义:定义一个创建产品类实例的工厂接口,而实际类实例的创建由继承自工厂接口的子类实现。核心工厂类不再负责具体类实例的创建,这样核心工厂类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口。意义:进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的类实例。角色:抽象工厂角色 ->工厂方法模式的核心,任何工厂类都必须实现这个接口。具体工厂角色
2016-04-26 20:58:44
416
原创 一 简单工厂模式
简单工厂模式定义:又叫做静态工厂方法模式,通过定义专门一个类来负责创建 其他类的实例,而被创建的其他类实例一般具有共同的父类。角色:分别为:工厂角色、抽象角色和具体实例角色。通过对每个类实例的抽象,抽象出共同的父类(通常以接口的形式创建),作为抽象角色。然后再工厂角色中,根据传递的参数,创建具体类实例。下面以具体的代码进行讲解: 首先来看下具体类: 例如:public class Apple{
2016-04-24 23:49:16
229
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人