ios c 代码hook方式

来源:互联网 发布:windows 系统编程面试 编辑:程序博客网 时间:2024/06/12 22:35

我个人感觉,搞逆向虽然动态是很总要,但不能一味的在动态过程中寻找。
1.动态调试不够灵活,很多时候即使断点有效监控过程很可能会比较漫长,最好通过挂钩或曝出栈信息来了解程序大致的调用方式,逻辑方式。
2.动态调试涉及到全局变量和多线程赋值,加锁等因素时,被混淆的代码可读性不高的情况下会增加代码调试难度,往往一个不小心就会走到逻辑混乱的地方,或则干脆走到错误的地方。
3.以上两条尤其适用于密码分析等在视图上难以直观观察到变化的过程中。

#include <CommonCrypto/CommonDigest.h>#include <substrate.h>unsigned char *(*old_CC_MD5)(const void *data, CC_LONG len, unsigned char *md);unsigned char *new_CC_MD5(const void *data, CC_LONG len, unsigned char *md){    NSData* sd = [NSData dataWithBytes:data length:len];    unsigned char *r = old_CC_MD5(data, len, md);    NSString* ss = [[NSString alloc] initWithData:sd encoding:NSUTF8StringEncoding];    NSData* rd = [NSData dataWithBytes:md length:16];    NSLog(@"CC_MD5: %@ | %@ = %@", sd, ss, rd);    return r;}unsigned char *(*old_CC_SHA1)(const void *data, CC_LONG len, unsigned char *md);unsigned char *new_CC_SHA1(const void *data, CC_LONG len, unsigned char *md){    NSData* sd = [NSData dataWithBytes:data length:len];    unsigned char *r = old_CC_SHA1(data, len, md);    NSString* ss = [[NSString alloc] initWithData:sd encoding:NSUTF8StringEncoding];    NSData* rd = [NSData dataWithBytes:md length:20];    NSLog(@"CC_SHA1: %@ | %@ = %@", sd, ss, rd);    return r;}%ctor{    MSHookFunction(&CC_MD5, &new_CC_MD5, &old_CC_MD5);    MSHookFunction(&CC_SHA1, &new_CC_SHA1, &old_CC_SHA1);}
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 嗨了 玩的嗨 嗨音highing 好嗨啊 叼嗨是什么意思 老嗨 吊嗨 嗨趣 嗨网 嗦嗨 好嗨呀 中文嗨歌 嗨唱 嗨卡 叼嗨真快乐 叼嗨片 嗨家 嗨妹 嗨海淘网 叼嗨网站 果总乱嗨 ktv比较嗨的歌 叼嗨爽吗 超嗨歌曲 嗨看 嗨车 嗨英语怎么说 超嗨dj串烧 嗨起来的歌 嗨霸 嗨人 dj嗨吧 嗨场dj 嗨吧现场 嗨的歌 嗨慢 解嗨是什么意思 很嗨的歌 我中意叼嗨 狂嗨喊麦 叼嗨歌曲