IDA反汇编/反编译静态分析iOS模拟器程序(四)反汇编的符号信息与改名

简介: 首先看看windows IDA和xcode的反汇编有什么不同。因为不确定直接分析UIKit的代码会不会有法律问题,还是自己写个例子吧。分析UIKit的时候因为没有完整的debugging symbols,所以得到的反汇编信息会比自己写的代码较少。
+关注继续查看

首先看看windows IDA和xcode的反汇编有什么不同。因为不确定直接分析UIKit的代码会不会有法律问题,还是自己写个例子吧。分析UIKit的时候因为没有完整的debugging symbols,所以得到的反汇编信息会比自己写的代码较少。

一个在命名空间ANameSpace的类DataInternal,一个DataModel的C++类,一个继承自UIButton的TestButton。演示的是TestButton的printLog函数。

这是源码:

namespace ANameSpace
{
    class DataInternal
    {
        int m_sample;
    public:
        void add();
    };
}

class DataModel {
    int m_count;
    int m_index;
    float m_number;
    std::vector<long> m_longData;
    double m_value;
    char m_name[10];
    ANameSpace::DataInternal m_internal;
    static DataModel* s_sharedInstance;
    DataModel();
public:
    int count();
    int index() { return m_index; }
    float number();
    static DataModel *sharedInstance();
    double getValueAfterAddedNumber(double number);
    void addLongData(long data);
};

class DataModel;

@interface TestButton : UIButton
{
    DataModel *m_model;
    NSString *m_printLog;
}

- (bool)inWindow;
@property (nonatomic, assign) DataModel *model;

@end

@interface TestButton (Construct)

+ (TestButton*)createAButton;
- (id)initWithNothing:(id)nilPointer;

@end

@interface TestButton (Test)

- (void)setParam1:(CGRect)p1 para2:(CGFloat)p2;
- (NSString*)printLog;

@end

- (NSString*)printLog
{
    if (m_model->count() == 0)
    {
        if (m_printLog)
            return m_printLog;
        else
            return @"ok";
    }
    else if (m_model->count() == 1)
    {
        if ([self model])
            return @"fine";
        else
            return @"error";
    }
    else
        return m_printLog;
}

这是IDA得到的反汇编:

__text:000026B5 ; =============== S U B R O U T I N E =======================================
__text:000026B5
__text:000026B5 ; Attributes: bp-based frame
__text:000026B5
__text:000026B5 __TestButton_Test__printLog_ proc near
__text:000026B5
__text:000026B5 arg_0           = dword ptr  8
__text:000026B5
__text:000026B5                 push    ebp
__text:000026B6                 mov     ebp, esp
__text:000026B8                 push    ebx
__text:000026B9                 push    edi
__text:000026BA                 push    esi
__text:000026BB                 sub     esp, 0Ch
__text:000026BE                 call    $+5
__text:000026C3                 pop     esi
__text:000026C4                 mov     ebx, ds:(_OBJC_IVAR_$_TestButton_m_model - 26C3h)[esi]
__text:000026CA                 mov     edi, [ebp+arg_0]
__text:000026CD                 mov     eax, [edi+ebx]
__text:000026D0                 mov     [esp], eax
__text:000026D3                 call    __ZN9DataModel5countEv ; DataModel::count(void)
__text:000026D8                 test    eax, eax
__text:000026DA                 jz      short loc_2713
__text:000026DC                 mov     eax, [edi+ebx]
__text:000026DF                 mov     [esp], eax
__text:000026E2                 call    __ZN9DataModel5countEv ; DataModel::count(void)
__text:000026E7                 cmp     eax, 1
__text:000026EA                 jnz     short loc_2729
__text:000026EC                 mov     eax, ds:(off_57FC - 26C3h)[esi]
__text:000026F2                 mov     [esp+4], eax
__text:000026F6                 mov     [esp], edi
__text:000026F9                 call    _objc_msgSend
__text:000026FE                 mov     ecx, eax
__text:00002700                 lea     edx, (cfstr_Error.isa - 26C3h)[esi] ; "error"
__text:00002706                 lea     eax, (cfstr_Fine.isa - 26C3h)[esi] ; "fine"
__text:0000270C                 test    ecx, ecx
__text:0000270E                 cmovz   eax, edx
__text:00002711                 jmp     short loc_2732
__text:00002713 ; ---------------------------------------------------------------------------
__text:00002713
__text:00002713 loc_2713:                               ; CODE XREF: __TestButton_Test__printLog_+25
目录
相关文章
|
11月前
|
移动开发 文字识别 开发工具
iOS小技能: OCR 之银行卡/身份证信息识别(免费次数无限)
1. 功能:扫描银行卡识别信息( 银行名称、 银行卡号)并截取银行卡图像 2. 应用场景:快速填充银行卡号的场景,比如商户进件、实名认证
281 0
iOS小技能: OCR 之银行卡/身份证信息识别(免费次数无限)
|
11月前
|
存储 算法 安全
|
编解码 IDE 开发工具
iOS自动化实操--设备基本信息获取与计算器案例详解
iOS自动化实操--设备基本信息获取与计算器案例详解
194 0
|
iOS开发
iOS蓝牙打印价签:商品条码、品名、零售价、规格信息等
iOS蓝牙打印价签:商品条码、品名、零售价、规格信息等
164 0
iOS蓝牙打印价签:商品条码、品名、零售价、规格信息等
|
存储 安全 JavaScript
iOS ASO 数据清理(Accounts帐号信息、Keychain数据)
iOS ASO 数据清理(Accounts帐号信息、Keychain数据)
709 0
iOS ASO 数据清理(Accounts帐号信息、Keychain数据)
|
移动开发 定位技术 API
iOS测试技巧:通过GPX文件修改经纬度信息(模拟iOS设备的位置)
iOS测试技巧:通过GPX文件修改经纬度信息(模拟iOS设备的位置)
576 0
iOS测试技巧:通过GPX文件修改经纬度信息(模拟iOS设备的位置)
|
文字识别 开发工具 iOS开发
iOS扫描证件&银行卡信息识别;身份证识别 (正反) ;矩形边缘识别 ;自定义证件相机 (含demo源码)【修订版】
iOS扫描证件&银行卡信息识别;身份证识别 (正反) ;矩形边缘识别 ;自定义证件相机 (含demo源码)【修订版】
557 0
iOS扫描证件&银行卡信息识别;身份证识别 (正反) ;矩形边缘识别 ;自定义证件相机 (含demo源码)【修订版】
|
传感器 iOS开发
iOS获取和监测设备基本信息——UIDevice的使用
iOS获取和监测设备基本信息——UIDevice的使用
263 0
|
iOS开发
iOS后台音频播放及锁屏界面显示音频信息
iOS后台音频播放及锁屏界面显示音频信息
273 0
iOS后台音频播放及锁屏界面显示音频信息
|
iOS开发
iOS获取通讯录联系人信息(二)
iOS获取通讯录联系人信息
111 0
热门文章
最新文章
相关产品
云迁移中心
推荐文章
更多