首页
社区
课程
招聘
[原创]看雪 2017 CTF 第六题 EOR base64
发表于: 2017-6-13 12:00 4216

[原创]看雪 2017 CTF 第六题 EOR base64

HHHso 活跃值
22
2017-6-13 12:00
4216

0x01 提取 apk中的/lib/armeabi-v7a/librf-chen.so,

0x02 IDA反编译,有ptrace和kill(pid,...)反调试机制,将涉及两者的调用指令全部清零,即改为"MOVS R0,R0" nil指令

0x03 更新 apk中的/lib/armeabi-v7a/librf-chen.so,并重新签名

0x04 IDA<adb forward tcp:23946 tcp:23946>虚拟机,调试

0x05 提取"异或EOR和base64加密"的内部比对注册码xb_rkey

    前期混淆清除分析可以发现最终比对位置为 .text 000038D0 ,调试断下可知

    librf_chen.so:A46D58D0 LDRB            R2, [R1,R4]

    librf_chen.so:A46D58D2 LDRB            R3, [R0,R4]

    librf_chen.so:A46D58D4 CMP             R3, R2

    R0:异或EOR和BASE64加密的内部xb_rkey 

    A46F2020  4A 50 79 6A 75 70 33 65  43 79 4A 6A 6C 6B 56 36  JPyjup3eCyJjlkV6

    A46F2030  44 6D 53 6D 47 48 51 3D  21 21 0A 0A 00 00 00 00  DmSmGHQ=!!......

    R1:异或EOR和BASE64加密的输入xb_ikey 

    B4B58DE0  65 4B 2F 30 36 38 71 52  57 57 67 7A 78 52 38 78  eK/068qRWWgzxR8x

    B4B58DF0  42 47 53 6D 48 48 74 73  4A 4D 30 3D 00 00 00 00  BGSmHHtsJM0=....

0x06 逆向获取异或操作因子 xorvector

  因为:xb_ikey = base64.b64encode(ikey ^ xorvector)

  所以:xorvector =  base64.b64decode(xb_ikey) ^ ikey

  

  base64.b64decode(xb_ikey)可以从[0x05]处通过xb_ikey解码得到,也可以在base64编码前得到

  

  [0x06.0x01]check函数在 text:00005AFC 开始执行base64编码,调试断下

    R0: base64.b64decode(xb_ikey)

    A48E6460  78 AF F4 EB CA 91 59 68  33 C5 1F 31 04 64 A6 1C

    A48E6470  7B 6C 24 CD 00 00 00 00  00 00 00 00 00 00 00 00

    在IDAPpython执行下述代码可以得到注册码rkey=madebyericky94528,#0xA48E6460对应于断点处R0值

    import base64

    b = base64.b64decode('JPyjup3eCyJjlkV6DmSmGHQ=!!'

    #b = '$\xfc\xa3\xba\x9d\xde\x0b"c\x96Ez\x0ed\xa6\x18t'

    ikey = '12345678901234567890'

    xorvector = []


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//