飘云 发表于 2015-6-16 15:47:12

模拟home点击,锁屏(黑屏)模式指纹解锁第一步

发现一个插件非常不错,在锁屏模式直接用指纹解锁,所以研究了下~~

大家知道在锁屏模式,指纹识别监听事件是无效的,所以变通一下:
1.先模拟按一次home让屏幕点亮
2.调用原来的指纹解锁功能

这里照顾没有iPhone5以上带指纹设备的朋友测试,我采用hook音量按钮的方法来做实验,实际功能和音量没毛关系,望悉知!

/*
代码模拟点击home键,黑屏模式指纹解锁第一步,嘿嘿!!

这个功能不好测试,所以我hook了音量调整按钮来验证

测试方法:
先将设备黑屏,再按音量键,屏幕亮了说明home模拟成功!!

https://www.chinapyg.com
http://www.dllhook.com

code by piaoyun
*/

#include <mach/mach_time.h>
// 记住把 IOKit.framework 从iOS设备中拖出来,然后导入
#include <UIKit/UIkit.h>

extern "C"{
    typedef uint32_t IOHIDEventOptionBits;
    typedef struct __IOHIDEvent *IOHIDEventRef;
   
    IOHIDEventRef IOHIDEventCreateKeyboardEvent(CFAllocatorRef allocator, AbsoluteTime timeStamp, uint16_t usagePage, uint16_t usage, Boolean down, IOHIDEventOptionBits flags);
}

@interface SpringBoard: UIApplication

- (void)_menuButtonDown:(struct __IOHIDEvent *)arg1;
- (void)_menuButtonUp:(struct __IOHIDEvent *)arg1;

@end


%hook SpringBoard

// 利用音量按钮来测试
- (_Bool)_volumeChanged:(struct __IOHIDEvent *)arg1
{
    NSLog(@"[++++]_volumeChanged");
    %log;
   
    SpringBoard *springboard = (SpringBoard *)[%c(SpringBoard) sharedApplication];
    uint64_t abTime = mach_absolute_time();
    IOHIDEventRef event = IOHIDEventCreateKeyboardEvent(kCFAllocatorDefault, *(AbsoluteTime *)&abTime, 0xC, 0x40, YES, 0);
    ;
    CFRelease(event);
    event = IOHIDEventCreateKeyboardEvent(kCFAllocatorDefault, *(AbsoluteTime *)&abTime, 0xC, 0x40, YES, 0);
    ;
    CFRelease(event);
   
    return %orig;
}

%end

%ctor
{
    NSLog(@"[++++]inject SpringBoard success!!!");
    %init;
}
看完了,是不是很简单,也是不是很蛋疼??
其实我还有更好的方法,嘿嘿!!!



tree_fly 发表于 2015-6-16 17:02:35

触发亮屏应该还有很多方法,按下HOME,按下电源键,数据线连接,数据线断开,新消息、新电话通知…
老飘,你这是黑第一步啊,期待啊

0xcb 发表于 2015-6-16 17:44:50

关键的就两句:)

    ;
    ;

飘云 发表于 2015-6-16 17:45:14

tree_fly 发表于 2015-6-16 17:02
触发亮屏应该还有很多方法,按下HOME,按下电源键,数据线连接,数据线断开,新消息、新电话通知…
老飘, ...

触发亮屏只需要一个-(void)undimScreen;
函数而已,

这样模拟是有原因的~ 嘿嘿,我不说~

飘云 发表于 2015-6-16 17:48:12

wx_f1Jji177 发表于 2015-6-16 17:44
关键的就两句:)
你怎么调这两句? 哈哈~~
黑屏模式下,指纹监听函数是作废的~

有兴趣可以深入研究下~

我慢慢放出来

tree_fly 发表于 2015-6-16 18:27:31

飘云 发表于 2015-6-16 17:45
触发亮屏只需要一个-(void)undimScreen;
函数而已,



hook音量键应该就是让代码执行可控,或许还有其他高明之处,快快发布后续内容吧,急不可耐啦

飘云 发表于 2015-6-16 18:38:31

tree_fly 发表于 2015-6-16 18:27
hook音量键应该就是让代码执行可控,或许还有其他高明之处,快快发布后续内容吧,急不可耐啦
为什么你要盯着hook音量键,我说了hook音量键是为了给没有指纹功能的设备做实验的,事实和音量键没任何关系!

目的很单纯:
就是让黑屏模式不按home键 指纹起作用~顺利解码进入桌面~~

你先自己研究下嘛,一下子讲出来有毛意思~~

creantan 发表于 2015-6-16 20:30:03

VirtualHome么?一直在用

0xcb 发表于 2015-6-16 22:43:34

飘云 发表于 2015-6-16 17:48
你怎么调这两句? 哈哈~~
黑屏模式下,指纹监听函数是作废的~



iPhone5没有指纹解锁,囧,

qihuakai 发表于 2015-6-23 04:17:43

学习。。。。。。。。。。。。
页: [1]
查看完整版本: 模拟home点击,锁屏(黑屏)模式指纹解锁第一步