自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

whklhhhh的博客

一只逆向小菜鸡

  • 博客(640)
  • 收藏
  • 关注

原创 180903 安卓-逆向经验(注解和Bean类)

今天的逆向中遇到了一些对只会线性编程的我来说比较神奇的操作 只是简单地了解过一些入门级的Java语法,越逆大型的工程化的APP就越觉得Java很神奇今天学到的是 通过对类做注解,可以直接将对象存入数据库中 使用Convert注解声明转换方法,具体的流程是通过gson将对象序列化成json,然后以字符串形式存入数据库中。取出时同样将json反序列化成对象使用 使用注解以后,对象可以直接像...

2018-09-04 01:06:32 608

原创 180902 逆向-网鼎(4-dalao)

运行发现不接受输入,直接弹出了一串回显 guess the flag: �<�9�c0/(���,� �~2,- 静态分析发现巨量mov,无法创建函数 并且具有dispatch函数来分发memcpy, srand, rand等库函数 以及通过异常处理来调用函数这些特征都指向了mov混淆movfuscator通过ltrace可以看到它进行了一次memcpy,然后就是很多r...

2018-09-03 01:26:28 1128 4

原创 180901 逆向-qira配置

qria是一个timeless的debugger,即一个可以在时间中任意穿梭的动态调试器实质上是一个trace工具,将程序整个执行流全部记录下来,然后给予用户回溯、查看命中断点的所有指令(即交叉引用)等安装方法: cd ~/ && wget -qO- https://github.com/BinaryAnalysisPlatform/qira/archive/v1.2.t...

2018-09-03 00:38:57 2177

原创 180931 安卓-adb backup的利用

之前看到过当apk中忘记将allowBackup=”true”删掉或者改成”false”时,会产生一个相当于文件dump的漏洞,而且无需root权限基本上也算老生常谈了,这个权限引发的问题应该很久了 利用方法是通过”adb backup”指令将应用数据备份出来,然后一方面可以在PC端进行解包分析数据,另一方面可以直接restore到别的机器上,造成“一些有缓存的应用无需登录即可盗用他人账号”...

2018-09-02 13:18:22 3558

原创 180930 逆向-Flare(4)

binstall xxx firefox.exe题目说明里说不要在物理机使用,尤其是使用firefox的环境 于是谨慎分析将.NET程序用dnspy打开,可以看到经过了符号名的混淆 这个变量名和方法名过长,比较干扰其他符号的阅读,因此使用de4dot反混淆 效果还是蛮好的 虽然符号全部被重命名了,不过这个信息丢失了就不可能还原了,至少这样的可读性要强很多大概分...

2018-08-31 12:08:51 1017 2

原创 180829 网鼎杯(4-apl)

今天这个难度比较恐怖,只做了一个有类似题目的misc-apl,其实觉得比较接近逆向题代码解base64后得到看起来很奇怪的apl代码{⍵(~⍵)/('No_Please_continue')('Yes,This_is_flag')}(∊(41(41)0+140)(⎕UCS('µě»ÕĀ$#Ğ$èáËĞĞĝ`âÞĠ\x9d#"!Ġ"KE(©$#Ğ$Q<k'))146){+/⍺≠33...

2018-08-30 10:25:03 1546

原创 180828 逆向-网鼎杯(3-2)

I_like_packIDA加载一看啥都没有,再根据题目名显然是个壳 windows下脱壳相对而言麻烦一些,ExeInfoPe查壳啊、各种壳的针对性操作啊啥的 Linux下一方面系统开源随便魔改,另一方面有一个/proc/pid/mem的文件可以直接读取进程的内存,使得dump极为容易本题放到系统下跑起来后发现如果输入会回显“NO”,而不输入的话大概三秒就会自动结束 这显然是alar...

2018-08-28 16:23:40 1111

原创 180827 逆向-网鼎杯(3-1)

这两周比赛接着比赛打到头爆。。。。 网鼎杯的题目质量感觉都还行,也练习到了不少东西SimpleSMC 这里的0x400aa6函数点过去一看就可以发现它是乱的字节无法执行,根据题目SMC(Self-Modifying Code)可以猜到这个函数就是被修改的目标了查看它的交叉引用可以发现有两个函数有调用 sub_400c48 关键代码如下 for ( i = 0; *(...

2018-08-28 16:22:17 1365

原创 180826 逆向-巅峰极客第二场(Reverse)

打开以后只有start函数,找不到main函数 但是看得到一个StartAddress 根据经验可以知道这个命名通常是指CreateThread的入口函数 进去看可以发现它设置了一个事件Hook SetWinEventHook(1u, 0x7FFFFFFFu, 0, pfnWinEventProc, 0, 0, 2u); 查了一下手册,前两个参数表示Hook的消息ID范围,从1~0x7f...

2018-08-26 22:11:07 500

原创 180825 逆向-FLARE(2)

比赛地址:FLARE-ON 2018Ultimate Minesweeper打开是个扫雷,点哪都死2333 IDA看一下发现是.NET,于是用dnspy打开二话不说直接找success的窗口类 发现是由参数决定的flag 跟着交叉引用过去看参数 new SuccessPopup(this.GetKey(this.RevealedCells)).ShowDialog();...

2018-08-26 00:45:47 820 1

原创 180824 pwn-WSL下的环境搭建

好几个月前装了WSL(Windows Subsystem for Linux),但是图省事装了Kali的,然后当时源是没法更新的,于是一直放置今天突然发现当时原来没卸载(。 于是又掏出来试了一下,发现源可以正常更新了这个流畅度、手感 比虚拟机快多了 再加上跟主系统直接共享硬盘,随意使用文件,再也不用VirtualTools传来传去 VMWare,再见~话是这么说,系统里其实啥都没...

2018-08-25 00:06:28 1533 4

原创 180823 逆向-网鼎杯(2-2)

gameIDA打开main函数啥有用的信息都看不到 运行一下发现是个八数码问题,要求解10000000次根据提示符去IDA的strings窗口找可以发现内存中存在这部分数据,但是没有交叉引用 说明该字符串在汇编层面是没有引用的一般来说,用户添加的信息会放在一起,所以可以在提示字符串上下翻一翻,果然找到一点有意思的东西 这个\x1BLuaQ很引入注目,大概率就是lua逆向了...

2018-08-23 16:42:29 1021 4

原创 180822 逆向-网鼎杯(2-1)

Reversemartricksmain函数中接收输入以后将input和一个字符串异或一下存入savedregs中 这里7*(i_23/7)+i_23%7这种写法实际上还是i_23,只不过表示成了第x行y列的形式(7个元素/行)两个数组分别存放在了savedregs-192和savedregs-128中 下面两层嵌套循环,中间进行了一个累加的运算 关键是箭头所指向的积的累...

2018-08-22 20:24:47 2232 7

原创 180821 逆向-周练babyre+Retdec配置

mips题目,看起来有点难受 想起来前几天defcon的时候刚好把retdec的环境搭起来,虽然还是有点小问题,但是正好借机解决一下嘛首先看了binary ninja的插件,跑了一下python缺少模块,又找不到它内置的python在哪,查了一下可以在binary ninja的script console窗口中import pip来安装 import pip pip.main(...

2018-08-22 01:34:59 1920 3

原创 180804 逆向-一个Java题的CM

通常来说,java题不会出现在CTF中,因为字节码的关系几乎可以反编译出源码。 这个题目看到了一些新思路,也学到了不少东西~题目解压缩给了一个jar和dll,估计最终还是走到x86汇编上去了 逆向jar,发现java层控制GUI界面,最终将参数直接通过native函数送到了dll中—以前只知道Android可以进行native编程,原来java也是可以同样调用的过程也相同,先loadl...

2018-08-09 01:49:34 278

原创 180803 安卓-SO的反OLLVM实践

业务部提来的需求,自觉搞不来所以随便试试~ 之前找过一些资料,基本上可查阅的只有通过符号执行来反控制流平坦化的,即之前说过的TSRC的那篇文章该文提供的脚本是基于纯PE控制流平坦化之上的,整体执行框架必须满足主分发器-子分发器-真实块-预处理器的流程才行 而实践发现ndk编译出的so,无论是x86架构还是ARM架构都不满足上述框架–cfg相当丑,并且全部没有所谓的预处理器点了几个函数看...

2018-08-09 01:34:49 1064

原创 180802 安卓-脱壳相关

老大给了几个APP让分析,其中大多带有壳,于是记录一下抗争的经历 作为一个只会打CTF的菜狗赛棍而言,其实对壳相关接触的相对很少,只大概知道是通过一些技巧转到so中进行释放dex、解密so等操作最先是的360壳,这个在比赛中遇到过,用drizzleDumper可以轻松拿到原DEX进行分析。它的原理是不断在内存中搜索DEX的头部特征,因此仅能脱下整体DEX还原的壳。后来碰到的是乐固2.8,...

2018-08-09 01:19:29 948

原创 180801 安卓-AndroidEmulator的mount问题

使用DexExtractor时需要替换系统,除了替换systemimage的方法以外就得更改/system/lib中的libdvm.so开发者提供的SystemImage是4.4Arm版本的,而模拟器上由于架构问题都是x86版本的,因此选择了替换libdvm.so等方法由于指定4.4版本,因此模拟器使用AndroidStudio中的VirtualDeviceMonitor来安装使用虚拟机最...

2018-08-06 00:25:35 510

原创 180731 安卓-JNI方法HOOK(1)

在so被混淆,难以阅读代码的情况下,可以通过针对性的Hook来做反制处理 由于native层想要操作包相关的东西包括获取签名、获取类、获取包名等等都必须通过JNI方法,即JNIENV指针指向的方法列表,来获取,包括常用的FindClass, CallMethod等等而这个方法列表是有限的,并且是一个结构体,很容易在C层进行操作,归根结底也是函数指针,那么取而代之是很简单的事情如果能够拿到...

2018-08-01 01:57:35 679

原创 180730 安卓-签名攻防

大多数App、Web等需要和服务器交互的程序中,为了保证请求是由程序自己发出的,通常会结合参数和时间戳通过一些算法来生成一个signature,即签名服务器再通过上述参数和算法同样生成sig,与请求中携带的sig进行比较,不符则认为是第三方调用的,进行特殊处理于是攻击者也会试图获得sig,一种方法是静态分析算法,用脚本如法炮制 静态的防御通过混淆、加壳等手段可以比较好的增加难度而另一...

2018-08-01 01:51:15 255

原创 180729 安卓-Xposed笔记(2)

今天提交才发现这几天研究的点错了,血崩orz回头重新搞,目标so做了混淆,感觉比较像控制流平坦化 但java层几乎没做混淆,关键符号加字符串定位轻而易举,结合Hook验证后即可通过Hook进行调用 然而Native方法不知怎么的死活没有Hook到 明明调用函数都已经抓到了的说HookNative方法Xposed也是可以HookNative方法的,只不过同样只能操作beforeHo...

2018-07-31 01:57:03 480

原创 180728 逆向-SMC出题笔记

在某黑哥的指示下给他加紧出两个题目~最先想到的就是34c3ctf时做过的SMC题目,那个随机数混杂着自解密真的是让我久久无法忘怀SMC题目的核心就在于自解密时的key 如果key不提供,那么考点就在于大量x86汇编中一般\x00出现的是最多的 而这需要基于一定量的代码之上才能猜出,而且这种题目相对而言可玩的花招要少很多于是选择了将key由一个.init_array中的函数动态生成...

2018-07-31 01:31:04 2481 1

原创 180727 安卓-Xposed使用笔记(1)

这几天也用了不少Xposed了,记录一下常用的一些方法和遇到的问题当做笔记~MultiDex的Hook需要通过Application.class中的attach方法来实现 如果再三确认类名和包名无误后,仍然报ClassNotFound异常,并且该APK是MultiDex的,那么就可以试着Hook一下attach方法XposedHelpers.findAndHookMethod(A...

2018-07-31 01:01:46 805

原创 180726 安卓-一则非正常闪退的分析

今天在逆一个App的时候死活没法运行,能够安装,但一打开就闪退 惯例查看adb的log,发现load了多个dex,还有很多第三方库做操作,产生了极其多的记录,本来以为是兼容性问题,结果试了几个终端都不行回头继续翻log,期望能找到退出信息和报错记录,突然几条log引起了我的注意I/AndroidRuntime(19220): VM exiting with result code 0, ...

2018-07-27 02:09:25 3804

原创 180725 安卓-签名机制

签名原理发送者将公钥公开,对于发送数据的信息摘要用私钥加密 接受者用公钥解密该内容,与接收数据的信息摘要进行对比 从而保证 1. 接收到的数据与发布数据相同 2. 发送者是公开公钥的私钥持有人与HTTPS相同,公钥必须可信才有意义 因此签名也需要携带一个由可信CA机构签发的证书,证明该公钥来自可信的发送者具体实现signapk对apk签名后会多出一个META-INF文件夹...

2018-07-25 23:54:02 205 2

原创 180724 安卓-SSLPinning及反制

简介SSL Pinning,即HTTPS的证书校验作用具体解释要从HTTPS的诞生说起了HTTP是明文传输的协议,在C/S不自行做加密处理的情况下,所有数据都是以明文形式在网络中传输的。 而在目前的庞大互联网中,大多数情况下从Client到Server要经过十几级网关转发。 而这中间,小到自己家的路由器、大到运营商的区域转发都是可以任意查看通信数据甚至篡改通信数据的。 这...

2018-07-25 22:39:13 4722 3

原创 180723 安卓-run-as命令

run-as命令功能以root身份运行命令,可以在未root的情况下查看某个(debug模式的)应用的内部信息(沙盒文件夹)介绍在没有root过的手机中,用户权限是无法查看很多信息的,包括各个应用的沙盒而run-as就向开发者提供了未root情况下访问沙盒信息的权限执行run-as + 包名,就可以直接以root权限进入该应用的沙盒中查看包括数据库、xml、各种信息文件...

2018-07-24 01:37:26 4879

原创 180721 逆向-极客巅峰(Re)

ReverseSimple Base-NIDA打开,从pdb路径可以leek出现一些信息 可以看到有Base32的字样,估计算法里可能会出现相关信息继续加载 简单重命名一下,注释上一眼就能看出来的结构 change函数里对Input做了变换,然后下面与一段字符串进行比较 注意这个地方break出去是继续跑下面的代码,并不是直接结束 从插件显示的花括号对应可以看...

2018-07-22 16:00:55 999 3

原创 180720 安卓-昨日问题解决

早上过去把写好的Xposed脚本跑起来,发现挂不上去,不知道是异步的问题还是当时没想起来FindAndHookMethod方法要加上Hook方法的参数的类作为参数的问题总之最后对doInBackground的Hook成功了,把堆栈打出来以后结果与昨天的预期截然不同–就是那个JEB断不到的方法在调用异步任务那么这样一来就有几个问题需要解释了 1. JEB为什么断不到呢? 这个问题最后...

2018-07-20 23:26:00 235

原创 180719 安卓-RPC对象查找不到的问题分析

通/断网情况下都抓不到HTTP包,估计彻底废弃了HTTP接口,完全使用RPC方式连接 在程序中搜索了半天,只根据单词找到了HTTP接口,但是并不是APK真正使用的连接方式,所以还要继续追溯这个APK中没有使用Native层,导入的库也很少,搜索socket才找到了一点调用,但最终也指向了HTTP虽然关键目标的HTTP包没有抓到,但是有一个每次都会同时发生的HTTP请求(URL-A),猜测...

2018-07-19 23:39:59 251

原创 180718 安卓-阶段总结

这几天一直在分析实际的APP,与CTF题目比起来差别还是挺大的 CTF的代码量大多很小,最多也就十几个类,完全可以挨个看下来,有什么骚操作最多也就一两个点,所有代码看下来总会发现的而实际中的APP视功能和体量体积会扩大很多,而且使用了很多相对而言比较难处理的工业技巧,例如异步处理、服务机制、消息机制等等从来没接触过的东西对于大体积的APP主要依靠字符串、关键词搜索来找到突破点,然后依靠交...

2018-07-19 00:58:18 246

原创 180717 安卓-特殊权限简介

前言Android的权限机制使得应用必须在用户同意的前提下才能进行一些敏感操作,而Android6.0新增了一个被称为运行时权限的功能。 这个功能可以申请许多用户体验很好的产品,但随之而来的是一些隐私安全问题辅助功能权限许多安卓使用者因为各种情况而需要以特殊方式与手机交互,包括无法看屏幕、使用触屏、接收语音消息等等,因此安卓提供了辅助功能和服务来帮助这些用户更简单地操作设备,包括...

2018-07-18 01:33:17 713

原创 180716 安卓-防护基本策略(反调试)

java层Dalvik虚拟机没有提供反调试的方法,但是可以通过反射方法来使得方法的调用变得扑朔迷离 动态获取类是更进阶的方法,通过一些解密计算等操作来得到类,可以使得动态调试较为困难native层Native层实质上就是Linux程序,因此反调试手段也跟Linux下的反调试基本相同主要还是alarm, ptraceme, tracepid等常见手段具体描述在前几天的Lin...

2018-07-18 01:01:33 326

原创 180715 安卓-防护基本策略(Native方法)

Native方法安卓的底层是Linux实现,但实际上程序入口是在Dalvik虚拟机中,作为字节码和运行在虚拟机中的代码本身就不具备太强的安全性,另一方面虚拟机的执行效率也是众所周知的因此安卓允许通过so库的加载来调用底层linux执行代码,这就是Native方法具体使用方法为在java层中使用System.loadlibrary(“test”),虚拟机会去载入libtest.so文件,...

2018-07-18 00:43:54 422

原创 180714 逆向-MeePwn(IMAGE_CRACKME)

一堆Reverse只有这个签到题难度的玩意儿能水一水(:з」∠)夜影为什么这么菜 Find the key that was used to generate Meepwn.ascii.bak Sometimes you don’t really need to read the code Notice: Flag is in format MeePwn{…}不需要真的...

2018-07-16 01:26:47 404

原创 180713 安卓-防护基本策略(混淆和签名)

混淆众所周知安卓是Java的一个分支,默认情况下Java编译时都会将变量名、方法名都信息全部包含进去,安卓也是同样与编译型语言(可以)将符号信息全部舍弃,完全依赖地址区分变量不同,解释型语言通常将信息和变量绑定使用,因此无法丢弃符号信息代码混淆编译型语言例如C语言,可以在编译时加上去除符号表和重定位信息的选项来减小生成文件的体积,对应的也会使反编译困难许多解释型语言虽然不能完全...

2018-07-16 00:57:18 247

原创 180712 安卓-入门

安卓逆向反编译Apk结构classes.dex java层的主要代码,即主程序META-INF 签名和证书相关文件lib native层的动态链接库文件(.so)目录,按照CPU架构作为子目录存放不同的soassets 打包的静态文件,通常存放需要读取的图片、加密代码等等res 资源目录AndroidManifest.xml 配置文件,默认状态为编译后的二进...

2018-07-12 23:35:48 493 2

原创 180705 逆向-Linux的逆向

常用工具和命令nm 列出目标文件的所有符号objdump -d参数表示反编译.text段中的程序代码readelf 查看ELF文件的各种信息IDAgdbIDA与PE程序基本类似,将ELF程序拖入IDA也可以快速的反汇编,主要借助hex-ray插件来反编译出可读性较高的伪代码实验-passwd_generatortrickpatchdynam...

2018-07-12 23:34:29 1547

原创 180629 逆向-ELF文件结构

Linux逆向ELF文件结构基本结构 ELF Header .text .data .bss other sections Section header table String Tables Symbol Tables …文件头ELF文件头(Elf header)位于最前部,...

2018-06-30 00:50:26 469

原创 180627 逆向-pyc还原脚本

针对suctf的Python大法好一题,通过解析内容还原pyc的脚本对于不同的解析内容需要另加修改,但原理一致–将元素按照 格式标识符-len-内容的形式递归填入即可值得说明的一点是脚本无法还原出原来一模一样的pyc,但可以还原出相同的py文件 这是因为python在编译pyc的时候,会将一些同样的字符串,通过引用来使用,即格式标识符“R”;另外还有一些字符串使用的是Interend,格...

2018-06-28 14:25:12 2602 2

空空如也

空空如也

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

TA关注的人

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