自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

随心散人专栏

编程快得让人飞起来

  • 博客(86)
  • 资源 (1)
  • 收藏
  • 关注

原创 服务动态选择域名问题

服务动态选择域名三种方案:1. 通过DNS就近调度。缺点:DNS的ip采集库维护很麻烦。优点:业务无缝接入。2. sim卡和语言判断国家,做国家与域名的映射,缺点:国际漫游不准确。优点:一般能准确路由到哪个服务,3. ping值最短作为就近服务器。优点:真正意义上的就近访问。缺点:国家不准确,上传数据导致法律违规。结论:根据用户选择的区域来选择域名。...

2019-12-25 10:19:00 217

原创 IBinder获取手机服务信息异常

小米8 利用IBinder transact获取服务的接口名字,结果出现以下异常:W/System.err: java.lang.SecurityExceptionW/System.err: at android.os.BinderProxy.transactNative(Native Method)W/System.err: at android.os.Binde...

2019-12-13 18:32:53 1736

原创 lua安全之关于lua扩展第三方库

android lua require第三方扩展库有三种方式:1. 用c实现独立的lua模块作为android的第三方动态库来引入,优点是lua扩展库独立方便更新替换,缺点是需要修改虚拟机,开启宏支持dlopen调用的方式,并且还需要设置lua寻找so路径才能正确加载。具体操作流程看这里。2. 用c实现lua模块作为lua虚拟机动态库的一部分,优点代码实现简单方便,缺点是需要修改虚拟...

2019-11-27 20:58:57 1468

原创 Android的ELF文件重定位详解,包括64位

0x01 引言ELF文件格式,主要基于两种,一种是基于链接视图,链接视图即是基于节(Section)来进行解析,一种是基于执行视图,执行视图即是基于段(Segment)来进行解析。前一种是用于静态分析的时候,譬如IDA载入。后一种是在动态链接执行的时候,譬如linker载入。 所以修改节信息实际上是不影响ELF正常执行的,而且hook功能也只能在执行视图中进行符号解析。所以修改节信...

2018-08-27 11:44:25 1734 1

原创 qt 收缩窗体

效果图:功能拆分图:代码:QtStubOption.cppQtSubOption::QtSubOption(QWidget *parent) : QLabel(parent){ ui.setupUi(this); m_GuiShow = SHOWGUI; setMouseTracking(true); m_PicStatus[SHOWGUI] = ":/QtGuiApplicatio...

2018-06-29 10:16:25 2637

原创 qt在visual studio 2015下的使用

创建工程:打开visual studio,按上一篇文章的方式创建新工程QtGuiApplication1,默认我们可以看到里面会出现QtGuiApplication1这个类是继承于QMainWindow这个类的。在创建过程中注意下图选项:有三个对象分别是QMainwindow,QWidget和QDialog,默认是QMainWIndow。他们之间的区别请自行百度。工程结构:QtGuiApplica...

2018-06-25 18:20:50 3195

原创 安装qt5.9.5 windows环境

下载:用国外链接下载慢,还是乖乖用国内链接地址吧,我这里5.9.5http://mirrors.ustc.edu.cn/qtproject/archive/qt/5.9/5.9.5/qt-opensource-windows-x86-5.9.5.exe 安装:在安装的时候需要创建qt账号,然后根据你的visual studio安装环境勾选对应的安装组件,我这里选择msvc2015 32-bit,m...

2018-06-25 17:35:11 8972 2

原创 S3C2440 lds链接脚本解析

1. SECTIONS到底意味着什么2.对于大于4K的程序该如何做3.正确的写法

2018-05-13 21:37:31 1102

原创 APK逆向之静态分析篇

0x00 APK包结构    0x11 apktool    

2018-05-09 00:06:00 3719

原创 OpenJTAG调试S3C2440裸板程序

0x00 懵逼    当你写好的初始化代码head.S和链接脚本uart.lds共同编译出来的*.bin,烧录到NandFlash中的时候,发现串口输出一片空白,这时你的想法是什么,砸电脑还是干点其他有用的事?还是老实的搭建调试环境吧,上篇讲过如何调试源码级的代码,但若是初始化代码有问题,譬如sdram拷贝出问题或者链接脚本有问题的话,通过openjtag gui调试会比较靠谱。0x01 烧录  ...

2018-05-08 00:09:19 1892

原创 mdb access2000 中文密码破解

access数据库破解工具很多,密码能不用费多大功夫就能破解出来,但是对于包含特殊字符包括中文字符的密码,就算破解出来后想通过数据库工具查看,复制粘贴到密码输入框实际都起不了作用,如下图: 通过写脚本来ADODB连接输入特殊字符,然后修改密码,能解决此类问题:Set args = WScript.Argumentsif args.count<>1 then ...

2018-05-06 21:57:31 5712

翻译 无源码情况下动态调试混淆的java程序

    逆向工程JAVA通常是非常简单的,因为优秀的JAVA二进制反编译器已经存在多年。类似于jd-gui工具和恢复java二进制文件源代码功能也做的非常出色的。在这种情况下我们需要动态调试java反编译java程序的情况下,可以从反编译导出然后导入java IDE如Eclipse作为一个新的java项目的一部分,然后通过IDE动态调试它,然而,这一切都基于没有混淆java字节码,因为大多数jav...

2018-05-06 21:39:35 2366

原创 win10用Eclipse+OpenJTag对S3C2440开发板进行动态调试

0 背景    在S3C2400开发板裸板调试程序中,常用调试手段有三种:点灯法,串口打印,OpenOCD。OpenOCD又分命令行和图形界面(Eclipse)。点灯发和串口打印调试效率都很低,若能掌握第三种调试方法,会让开发过程变得高效。以下重点介绍图形界面的调试方法。1 准备环境    01.gnu-mcu-eclipse-build-tools-2.9-20170629-1013-win64...

2018-04-28 13:56:56 1188

原创 python3 Crypto环境

最开始想尝试在windows下面安装python3.6,虽然python安装成功,但在安装Cryto模块用pip3 install pycrypto老是会报错。老夫想了半天,

2017-12-21 09:19:41 7519 2

原创 zlib数据格式及解压缩实现

0x01 zlib和其他压缩的魔术头一般来说压缩文件都有个魔术头,用于区分不同的压缩文件对应不同的解压缩算法。7z文件: 00000000 37 7A BC AF 27 1C 00 03 CD F7 CC 2E 66 6A 33 00 7z集' 枉?fj3 tar.xz文件00000000 FD 37 7A 58 5A 00 00 04

2017-12-15 13:37:18 15427

原创 openssl c++实现bouncycastle中AES加解密

0x01 为什么要用bouncycastle先说说JCE(Java Cryptography Extension)是一组包,它们提供用于加密、密钥生成和协商以及 Message Authentication Code(MAC)算法的框架和实现。它提供对对称、不对称、块和流密码的加密支持,它还支持安全流和密封的对象。它不对外出口,用它开发完成封装后将无法调用。由于美国出口控制规定,J

2017-12-15 11:05:41 1569

原创 arm shellcode 编写详析2

前一篇中介绍了arm shellcode基本用法,现在涉及到arm和thumb状态在前一篇中默认为arm32模式:text:00008074 ; Segment type: Pure code.text:00008074 AREA .text, CODE.text:00008074 ; ORG 0x8074.text

2017-11-26 22:05:49 723

原创 arm shellcode 编写详析1

在编写arm shell code 之前,先介绍下arm中r0-r15寄存器的主要用途:Register Alt. Name Usager0 a1 First function argument Integer function result Scratch registerr1 a2 S

2017-11-26 21:27:39 1246

原创 arm32和arm64常用指令B BL BLX机器码计算

现在大部分手机cpu架构是ARM v7-A和ARMV8-A,,在ARM-v7A中常使用32位ARM指令集并且支持thumb指令集与arm的切换,而在ARMV8中使用的是64位ARM指令集且不再有thumb指令集状态的切换了。在调用函数时,会有常用的调用方式:BL和B,且分三种情况arm, thumb, aarch64,而对于BLX在arm64指令集中不再有。下面对这三种情况进行讨论。A

2017-10-29 14:55:29 11967

原创 arm64动态链接库通过函数名获取函数偏移

基本思路是分析elf文件,首先遍历节区头部Elf32_Shdr查看sh_type属性值,得到属性值为SHT_DYNSYM的节区。其次通过名字遍历节区结点,找到类型为STT_FUNC并且名字与其相同的结点。代码如下:static void * xmalloc(size_t size){ void *p; p = malloc(size); if (!p) { LOGV(

2017-10-25 16:52:02 966

原创 勒索病毒傀儡进程脱壳

样本是:wallet勒索病毒环境:虚拟机VMWARE win7 32位工具:OD c32asm初次拿到样本,先用火绒剑工具监控下病毒样本的流程,可以看到有一个自创建进程的行为。我们等找到OEP后,在CreateProcessA下断点进行跟踪,找到OEP后,对CreateProcessA下断点

2017-09-05 11:28:58 912 1

原创 protobuf流的反解析Message

0x01 protobuf的基本概念protobuf通过定义".proto"文件来描述数据的结构。.proto文件中用"Message"所表示所需要序列化的数据的格式。Message由field组成,Field类似JAVA或者C++中成员变量,通常一个field的定义包含修饰符、类型、名称和ID。下面看一个简单的.proto文件的例子:package testInfo;

2017-08-16 11:47:36 17228 5

转载 AES算法重点详解和实现

可以看到,在原始数据长度为16的整数倍时,假如原始数据长度等于16*n,则使用NoPadding时加密后数据长度等于16*n,其它情况下加密数据长度等于16*(n+1)。在不足16的整数倍的情况下,假如原始数据长度等于16*n+m[其中m小于16],除了NoPadding填充之外的任何方式,加密数据长度都等于16*(n+1);NoPadding填充情况下,CBC、ECB和PCBC三种模式是不支持的

2017-04-26 15:04:00 4238

转载 CRC32算法实现

CRC32 检错能力极强,开销小,易于用编码器及检测电路实现。从其检错能力来看,它所不能发现的错误的几率仅为0.0047%以下。从性能上和开销上考虑,均远远优于奇偶校验及算术和校验等方式。因而,在数据存储和数据通讯领域,CRC无处不在:著名的通讯协议X.25的FCS(帧检错序列)采用的是CRC-CCITT,ARJ、LHA等压缩工具软件采用的是CRC32,磁盘驱动器的读写采用了CRC16,通用的图像

2017-04-26 14:12:56 3485

转载 SHA1算法实现及详解

1 SHA1算法简介安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的

2017-04-26 13:55:31 34919 5

转载 Android系统架构图

一、Aplications(应用层)  应用是用Java语言编写的云新在虚拟机上的程序。二、Application Framework(应用框架层)  这一层是编写Google发布的核心应用时所使用的API框架,开发人员可以使用这些框架来开发自己的应用。  View System:可以用来构建应用程序,它包括列表、网格、文本框、按钮以及可嵌入的Web

2017-03-23 14:49:25 684

转载 android和linux操作系统的区别

Android是由Google为移动设备开发的开源操作系统。Android软件的原始开发商Android公司是由Google,Inc.于2005年购买的。它是基于Linux 2.6内核开发的。Linux操作系统于1991年由Linus Torvalds作为台式计算机的开源操作系统开发。Linux操作系统是作为MINIX操作系统开发的,不支持使用Intel 80386机器的32位功能。虽然Andro

2017-03-23 13:39:02 11382

转载 SQLite加解密

0x00 SQLite概述SQLite是一个轻量级、跨平台的,开源的数据库引擎,它在读写效率,消耗总量、延迟时间和整体简单性上具有的优越性,使其成为移动平台数据库的最佳解决方案。然而免费版的SQLite有一个致命缺点:不支持加密。这就导致存储在SQLite中的数据可以被任何人用任何文本编辑器查看到。0x01 SQLite加密工具SQLite Encr

2017-03-22 18:10:59 8482

转载 windows平台下的反调试技术

在调试一些病毒程序的时候,可能会碰到一些反调试技术,也就是说,被调试的程序可以检测到自己是否被调试器附加了,如果探知自己正在被调试,肯定是有人试图反汇编啦之类的方法破解自己。为了了解如何破解反调试技术,首先我们来看看反调试技术。 一、Windows API方法 Win32提供了两个API, IsDebuggerPresent和CheckRemoteDebuggerP

2017-03-14 15:49:13 1613

转载 c#调用c++dll接口及回调函数

在合作开发时,C#时常需要调用C++DLL,当传递参数时时常遇到问题,尤其是传递和返回字符串是,现总结一下,分享给大家:VC++中主要字符串类型为:LPSTR,LPCSTR, LPCTSTR, string, CString, LPCWSTR, LPWSTR等但转为C#类型却不完全相同。类型对照:BSTR ---------  StringBuilderLPCTSTR

2017-03-14 15:21:34 7526

转载 使用IDA Pro动态调试SO文件

(1)在IDA的安装路径中找到android_server文件。(2)将android_server拷贝到手机的/data/local/tmp目录下面。(3) 将手机插上电脑,打开命令提示符, 先输入”adb shell”,然后输入”su root”获取root权限。接着输入” chmod 777 /data/local/tmp/android_server” 给android_s

2017-03-14 14:32:29 5087

转载 AndroidStudio+ideasmali动态调试smali汇编

0x00    前言之前对于app反编译的smali汇编语言都是静态分析为主,加上一点ida6.6的动态调试,但是ida的调试smali真的像鸡肋一样,各种不爽,遇到混淆过的java代码就欲哭无泪了。后来知道IDEA用一款插件也可以实现smali的动态调试,但是只有14.1之后的版本才支持。idea是一款商业软件,懒得去找各种破解版,就想着用androidstudio来代替idea来达到动

2017-03-14 13:58:48 1588

转载 Intel Hex概述

什么是Intel Hex文件Intel HEX文件时遵循Intel HEX文件格式的ASCII文本文件。在Intel HEX文件的每一行都包含了 一个HEX记录。这些记录是由一些代表机器语言代码和常量的16进制数据组成的。Intel HEX文件常用来传输要存储在ROM 或者 EPROM中的程序和数据。大部分的EPROM编程器能使用Intel HEX文件。Intel

2017-02-23 21:55:38 6227

转载 ecc算法入门介绍

一、从平行线谈起。平行线,永不相交。没有人怀疑把:)不过到了近代这个结论遭到了质疑。平行线会不会在很远很远的地方相交了?事实上没有人见到过。所以“平行线,永不相交”只是假设(大家想想初中学习的平行公理,是没有证明的)。既然可以假设平行线永不相交,也可以假设平行线在很远很远的地方相交了。即平行线相交于无穷远点P∞(请大家闭上眼睛,想象一下那个无穷远点P∞,P∞是不是很虚幻,其实与其说数学

2017-01-13 21:56:11 1852

原创 分数的乘法逆元和负数的取模运算

1.乘法逆元如果ax≡1 (mod p),且gcd(a,p)=1(a与p互质),则称a关于模p的乘法逆元为x。2.推演例如:2关于模23的乘法逆元解:2 * X mod 23 = 1        等式变换为:2X - 23Y = 1 -----------@1        将23%2替换23得:2X - Y = 1 ---------------

2016-12-28 18:31:24 10943

转载 RSA算法演绎

RSA是第一个也是使用的最广发的公钥加密算法,在1978年由R.Rivest、AdiShamir和Adleman三人发明,并以他们的名字命名。RSA算法的安全性基于大数因子分解的困难性,下面介绍一下它的基本原理:1、生成公钥和私钥(1) 选取两个大素数:p和q;(2)计算n=p*q;(3)计算小于n并且与n互质的整数的个数,即欧拉函数o(n) = (p - 1) * (q

2016-12-26 20:21:30 784

转载 SHA-256算法实现

转载来自于 《基于FPGA的SHA-256算法实现》和 http://www.cnblogs.com/tofixer/p/3498048.htmlSHA-256 算法输入报文的最大长度不超过2^64 bit,输入按512-bit 分组进行处理,产生 的输出是一个256-bit 的报文摘要。该算法处理包括以下几步: STEP1:附加填充比特。对报文进行填充使报文长度与448 模5

2016-12-18 13:18:09 90498 15

原创 android studio环境搭建

一.  Android Studio注意:以下安装环境要求win7系统和intel处理器https://developer.android.com/sdk/index.html首先在这里下载android-studio-bundle-141.2288178-windows.exe二.JDKhttp://www.oracle.com/technetwork/j

2016-12-09 11:34:38 674

原创 模拟网页行为之实践四

这篇谈下c++如何hook网页中的JS函数。在谈这个问题之前,需要搞清楚JS执行发生在什么时候。在网页加载过程中,会根据接收到的html文本,去解析对应里面的脚本,样式

2016-12-07 20:59:35 785

转载 RC4算法实现

1、密钥流:RC4算法的关键是根据明文和密钥生成相应的密钥流,密钥流的长度和明文的长度是对应的,也就是说明文的长度是500字节,那么密钥流也是500字节。当然,加密生成的密文也是500字节,因为密文第i字节=明文第i字节^密钥流第i字节;2、状态向量S:长度为256,S[0],S[1].....S[255]。每个单元都是一个字节,算法运行的任何时候,S都包括0-255的8比特数的排列组合,

2016-12-02 01:20:58 2349

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除