原文:http://www.phonesdevelopers.com/1781016/ The surgery class named PluginWidgetIOS use lldb can get: view plain (lldb) image lookup -r -s PluginWidgetIOS   7 symbols match the regular expression 'PluginWidgetIOS' in /Applications/Xcode.app/Contents/…
最近,关于 @Steipete 在Radar发布的帖子,笔者看到很多人在问「你是怎么理解那个伪代码的」.笔者想写博客已经有一段时间了,现在正好就此发表第一篇博文.笔者在一个叫 Hopper 的工具上花了很多时间(这是笔者的必备工具之一),虽然它很神奇,但是刚接触的时候可能会让人感觉不知所措.本篇博文的目的是帮助那些回避或不熟悉逆向工程的人填补知识空白. 你是否曾经疑惑,别人是怎么获取下图所示的私有 API伪代码的?这实际上很简单,而且是找出 UIkit中那些烦人错误的好方法.使用 Hopper…
windows下,我们对于.net程序发生Crash,资源泄露,死锁等问题的分析,有神器windbg .net core程序运行在linux上时,该怎么进行对对Core Dump文件进行分析呢?今天介绍一款Linux/mac os下的一款调试利器:lldb. 官网地址 Linux下调试.Net core(1):lldb的安装 dotnet core调试docker下生成的dump文件 Debugging .NET Core on Linux with LLDB .NET Core is desi…
收集,整理http://www.cnblogs.com/fply/p/8488842.html 这个文章讲了ios上debugserver相关配置 http://iphonedevwiki.net/index.php/Debugserver#Debugging_through_USB_instead_of_WiFi 以下是实操 环境: ida 7.0 ios 7 mac 1. scp -P 2222   root@localhost:/var/root/debugserver ~/ 2.这里,我…
LLDB是Low Level Debugger的简称,在iOS开发的调试中LLDB是经常使用的,LLDB是Xcode内置的动态调试工具.使用LLDB可以动态的调试你的应用程序,如果你不做其他的额外处理,因为debugserver缺少task_for_pid权限,所以你只能使用LLDB来调试你自己的App.那么本篇博客中就要使用LLDB来调试从AppStore下载安装的App,并且结合着Hopper来分析第三方App内部的结构.LLDB与Hopper的结合,会让你看到不一样的东西,本篇博客就会和你…
目录: 一. iOS 如何做才安全 二.ipa文件 三.沙盒 中的数据 四.Reveal:查看 任何APP 的UI结构 五.反编译工具:IDA 六.反编译工具:Hopper Disassembler 七.抓包:https数据的解密 iOS应用的安全性 常常被大家忽视. 一.iOS 如何做才安全: 详见<iOS如何做才安全> 二.ipa文件 1.AppStore里的ipa包 可以通过 iTunes 下载到电脑.iOS8.3以下系统的非越狱的手机上,可以用MAC上的PP助手等软件,直接把手机上的i…
LLDB基础知识 LLDB控制台 Xcode中内嵌了LLDB控制台,在Xcode中代码的下方,我们可以看到LLDB控制台. LLDB控制台平时会输出一些log信息.如果我们想输入命令调试,必须让程序进入暂停状态.让程序进入暂停状态的方式主要有2种: 断点或者watchpoint: 在代码中设置一个断点(watchpoint),当程序运行到断点位置的时候,会进入stop状态 直接暂停,控制台上方有一个暂停按钮,上图红框已标出,点击即可暂停程序 LLDB语法 在使用LLDB之前,我们来先看看LLDB…
目的:主要是想学习一下IDA的IDC的脚本的使用.这里做了一个小的测试. 这里使用的是VS2015Community来生成文件的. 一.编写测试程序: 这里先生成我们的目标数据. 然后编写测试程序.得到下面的代码. #include <stdio.h> #include <string.h> //the xor key is 'B' ,异或的key int Verify(char *Flag) { int i; ] = { , , , , , , , , , }; //这里是关键数…
安卓动态调试七种武器之孔雀翎 – Ida Pro 作者:蒸米@阿里聚安全 0x00 序 随着移动安全越来越火,各种调试工具也都层出不穷,但因为环境和需求的不同,并没有工具是万能的.另外工具是死的,人是活的,如果能搞懂工具的原理再结合上自身的经验,你也可以创造出属于自己的调试武器.因此,笔者将会在这一系列文章中分享一些自己经常用或原创的调试工具以及手段,希望能对国内移动安全的研究起到一些催化剂的作用. 目录如下: 安卓动态调试七种武器之长生剑 - Smali Instrumentation 安卓动…
原文在此 一.Reveal 1 一般使用     Reveal是ITTY BITTY发布的UI分析工具,可以很直观的查看App的UI布局.如下图所示:     Reveal是需要付费的,需要89美元,也可以免费使用30天,不过和其它软件一样,网上都有破解版.推荐另一位博主的博客,里面有破解版安装和简单使用教程:iOS张诚的博客--Reveal使用教程. 另外也将软件Fork了一份到GitHub:https://github.com/mddios/Reveal.git. 2 程序逆向     上面…
该插件是一款可以自动识别栈上局部变量为字符串的插件,字符串形式如下,并自动的加上注释                                       如图:可以自动识别栈上的字符串 项目主页地址:  https://github.com/fireeye/flare-ida    该项目有4个插件  本文介绍 stack_strings插件 该插件的原文介绍:  https://www.fireeye.com/blog/threat-research/2014/08/flare-ida…
一.前言 今天我们继续来看破解apk的相关知识,在前一篇:Eclipse动态调试smali源码破解apk 我们今天主要来看如何使用IDA来调试Android中的native源码,因为现在一些app,为了安全或者效率问题,会把一些重要的功能放到native层,那么这样一来,我们前篇说到的Eclipse调试smali源码就显得很无力了,因为核心的都在native层,Android中一般native层使用的是so库文件,所以我们这篇就来介绍如何调试so文件的内容,从而让我们破解成功率达到更高的一层.…
开胃小菜--简单的断点调试 在xcode中打开一个app,在想要break的行号上单击,即可生成一个深色的箭头标识--断点.如下图,在viewDidLoad:中设置了断点. 运行app,等待...就可以看到xcode在断点处进入调试模式,现在让我们把视线移到xcode右下角的控制台,有木有看到(lldb)这样一行,鼠标移到此行,输入 ? 1 po [self view] 回车,看看控制台上是不是多了一些view的信息,如下图: po(print object)是LLDB的一个命令,其主要功能是输…
在尝试学习分析的过程中,判断结论不一定准确,只是一些我自己的思考和探索.敬请批评指正! 1. IDA使用 (1)搜索.下载并执行IDA Pro,对可执行程序lab05-01.dll进行装载,分别以图形模式和文本模式查看程序的反汇编结果 运行IDA Pro,打开Lab05-01.dll,以图形化界面显示: 直接定位到DLLMain开始的位置上.用空格键可以切换到文本模式查看: (2)查看程序中的所有函数 程序中的所有函数包括:导入函数.导出函数.在中间过程中使用的函数. 我们可以从Import窗口…
转载自http://drops.wooyun.org/tips/6840 在现在的移动安全环境中,程序加壳已经成为家常便饭了,如果不会脱壳简直没法在破解界混的节奏.ZJDroid作为一种万能脱壳器是非常好用的,但是当作者公开发布这个项目后就遭到了各种加壳器的针对,比如说抢占ZJDroid的广播接收器让ZJDroid无法接收命令等.我们也会在”安卓动态调试七种武器之多情环 - Customized DVM”这篇文章中介绍另一种架构的万能脱壳器.但工具就是工具,当我们发布的时候可能也会遭到类似ZJD…
在上文中,我们通过分析定位到sub_130C()这个函数有很大可能性是用来做反调试检测的,并且作者开了一个新的线程,并且用了一个while来不断执行sub_130C()这个函数,所以说我们每次手动的修改TracerPid实在是不现实. 既然如此我们何不把sub_130C()这个函数给nop掉呢?为了防止nop出错,我们先在”F5”界面选择所有代码,然后用”Copy to assembly”功能,就可以把c语言代码注释到汇编代码里. 在这里我们看到如果想要注释掉sub_130C()函数,只需要注释…
我们继续分析自毁程序密码这个app,我们发现该程序会用fopen ()打开/proc/[pid]/status这个文件,随后会用fgets()和strstr()来获取,于是我们在strstr()处下个断点,然后让hex view的数据与R0同步.每次点击继续,我们都会看到strstr传入的参数.当传入的参数变为TracerPid:XXXX的时候我们停一下.因为在正常情况下,TracerPid的值应该是0.但是当被调试的时候就会变成调试器的pid. 为了防止程序发现我们在调试,在这里我们需要把值改…
Ida双开定位的意思是先用ida静态分析so文件,然后再开一个ida动态调试so文件.因为在动态调试中ida并不会对整个动态加载的so文件进行详细的分析,所以很多函数并无法识别出来.比如静态分析中有很多的sub_XXXX函数: 但动态调试中的ida是没有这些信息的. 所以我们需要双开ida,然后通过ida静态分析的内容来定位ida动态调试的函数.当然很多时候我们也需要动态调试的信息来帮助理解静态分析的函数. 在上一节中,我们提到.init.array中有个sub_2378(),但当ida动态加载…
我们知道so文件在被加载的时候会首先执行.init_array中的函数,然后再执行JNI_OnLoad()函数.JNI_Onload()函数因为有符号表所以非常容易找到,但是.init_array里的函数需要自己去找一下.首先打开view ->Open subviews->Segments.然后点击.init.array就可以看到.init_array中的函数了. 但一般当我们使用ida进行attach的时候,.init_array和JNI_Onload()早已经执行完毕了,根本来不急调试.这…
预备 由于IDA pro只能装在32位环境下,如果是64位Ubuntu,需要运行如下命令安装32位的必备库. sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install libc6-i686:i386 libexpat1:i386 libffi6:i386 libfontconfig1:i386 libfreetype6:i386 libgcc1:i386 libglib2.0-0:i386 libice6…
这个技巧个人认为非常有用 当Xcode在断点调试的时候,在控制台中输入 po self.view.frame 类似这样的命令会挂掉,不信可以亲自去试试(Xcode7 以后支持LLDB类型的打印) 那么如何使它不报错呢 这个时候就需要使用终端了 在终端中依次输入以下三条命令 1. touch ~/.lldbinit 2. echo display @import UIKit >> ~/.lldbinit 3. echo target stop-hook add -o \"target…
lldb命令常用(备忘) 假如你准备在模拟器里面运行这个,你可以在"(lldb)"提示的后面输入下面的: (lldb) po $eax LLDB在xcode4.3或者之后的版本里面是默认的调试器.假如你正在使用老一点版本的xcode的话,你又GDB调试器.他们有一些基本的相同的命令,因此假如你的xcode使用的是"(gdb)"提示,而不是"(lldb)"提示的话,你也能够更随一起做,而没有问题. "po"命令是"pr…
转:http://www.devdiv.com/home.php?mod=space&uid=50901&do=blog&id=50856 在XCode的以前版本中,如果遇到了 [代码]c#/cpp/oc代码: 1 message sent to deallocated instance 0x6d564f0 我们可以使用info malloc-history 0x6d564f0来查看调用堆栈来查看崩溃发生的地方,这种方法这里不作阐述,大家自行百度.   在新的XCode里,调试器默…
Source: http://www.0xebfe.net/blog/2013/01/13/how-to-create-an-anonymous-ida-pro-database-dot-idb/ Probably it’s not secret for you that every .IDB files contains header with your license information. There are two “netnodes” in every .IDB file that…
我打暴力不对,于是就看看题解,,,,,,IDA*就是限制搜索深度而已,这句话给那些会A*但不知道IDA*是什么玩意的小朋友 看题解请点击这里 上方题解没看懂的看看这:把左上角的一团相同颜色的范围,那个范围周围的一圈,和剩余范围分别用c[i][j]赋值为1,2,0.然后做IDA*,限制搜索深度,估值函数h为c[i][j]不为1的范围中的不同颜色数目,意思是至少要多少次才能达到要求.ans不断迭代,如果g+h>ans则退出,如果c数组全为1则说明找到方案.感觉IDA*比A*编程难度简单好多,不用建堆…
Android DDMS 连接真机(己ROOT),用file explore看不到data/data文件夹,问题在于data文件夹没有权限,用360手机助手或豌豆荚也是看不见的. 有以下两种解决方法: 方法一:使用adb shell命令 注:android下的shell是不完整的,不能用-R参数,即使su到root帐号也执行不了.效果如下: 所以只能一个一个文件夹去设置权限.打开cmd控制台,依次执行以下命令: 1 2 3 4 adb shell su chmod 777 /data chmod…
IDA*是IDS的基础上加上满足A*算法的估值函数来剪枝的搜索算法. 这题代码量挺少的,可以看出整个IDA*的框架: #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ][],over[][]={ {"}, {"}, {"00*11"}, {"}, {"} }; int h(){ ; ; i<; ++i)…
android DDMS 连接真机(己ROOT),用file explore看不到data/data文件夹的解决办法 问题是没有权限,用360手机助手或豌豆荚也是看不见的. 简单的办法是用RE文件管理器(授予root权限),把data和data/data设置成777权限 注意:用RE管理器打开看到默认不是777的,只是可读写还是不够的. 另外就是使用adb shell命令,但android下的shell是阉割了的 不能用-R参数 既使su到root帐号也执行不了 C:\Documents and…
http://www.zddhub.com/memo/2015/12/20/lldb-golang-debug/ go build -gcflags "-N -l" -o test test.go MoJetdeMacBook-Pro:Downloads mojet$ lldb test (lldb) target create "test" Current executable set to 'test' (x86_64). (lldb) breakpoint s…
//第一次在新博客里发文章好紧张怎么办 //MD巨神早已在一个小时前做完了 The Rotation Game Time Limit: 15000MS Memory Limit: 150000K Total Submissions: 5950 Accepted: 1992 Description The rotation game uses a # shaped board, which can hold 24 pieces of square blocks (see Fig.1). The b…