关于超出技术认知范围的一个 APP---字符串静态解密ida python脚本

nsstring部分未解密,但是这个脚本不影响分析,祝大家玩的愉快。

import os.path
import idaapi
import idautils
import idc

def xxxxxxxx():
segm = idaapi.get_segm_by_name(“__data”)
if segm is None:
return None

print(" - start address: 0x%x" % segm.start_ea)
print(" - end address: 0x%x" % segm.end_ea)
print(" - key: 0x%x" % idaapi.get_dword(segm.start_ea))
print(" - len: 0x%x" % idaapi.get_dword(segm.start_ea + 4))
encrypt_key = idaapi.get_dword(segm.start_ea)
encrypt_len = idaapi.get_dword(segm.start_ea + 4) / 4 - 2
encrypt_dat = segm.start_ea + 8
print(" - key: 0x%x" % encrypt_key)
print(" - len: 0x%x" % encrypt_len)
print(" - dat: 0x%x" % idaapi.get_dword(encrypt_dat))
while encrypt_len > 0:
    cur_key = idaapi.get_dword(encrypt_dat)
    dec_data = cur_key ^ 0xDEADBEAF
    dec_data = dec_data - encrypt_key
    print(" - dat1:%x" % dec_data)
    # MakeComm(encrypt_dat, "[*] " + str(dec_data))
    patch_dword(encrypt_dat, dec_data)
    encrypt_dat += 4
    encrypt_len -= 1
    encrypt_key = cur_key


# offset = get_struct_offsets(malloc_par()).get('sbrk_base')
# sbrk_base = segm.start_ea
# ea = idc.get_segm_start(get_name_ea_simple("_IO_2_1_stdin_"))
# end_ea = idc.get_segm_end(ea)

# while ea < end_ea:
#     ptr = config.get_ptr(ea)
#     if idaapi.is_loaded(ptr) and ptr == sbrk_base:
#         return (ea-offset)
#     ea += config.ptr_size

return None

xxxxxxxx()

KeePass_str_deobf.py (2.1 KB)

1 个赞

idb太大,传不上来,自己运行脚本解密就好了。

(帖子已被作者删除)

1 个赞

好玩不 :sweat_smile: :sweat_smile: :sweat_smile:

(帖子已被作者删除)

不要偏题,它没有用虚拟cpu!!!

(帖子已被作者删除)

dyld预加载包,dyld3-dyld4的技术,可以提高加载速度。

(帖子已被作者删除)

它的最大缺点就是运行速度很快,和真机没两样,虚拟cpu不可能这么快,这是最大的漏洞。

(帖子已被作者删除)

这个app我已经举报了,还没向苹果举报的,能够窃取信息的。

真的没有想到你居然是这样的人

威胁到国家安全,肯定举报,因为它叫KeePass

1 个赞

原来如此, 这样的话, 肯定不止你一个人举报了

看你对这个回复很积极,开发者你好啊 :sweat_smile: :sweat_smile: :sweat_smile:

我倒希望拥有这么牛逼的源码, 可惜只能留下没有技术的眼泪

不过你一直想误导我们它的原理, 不知道是出于什么因素

明明是你好不!!它不是虚拟cpu!!!
这个也不是很牛逼,只是这个需求不是很大,加上苹果的策略,不然还是能搞一搞的。

1 个赞

这个已经相当厉害了好吧, 不进要虚拟CPU, 还要接管一些系统框架创造环境, 只能说你也是超级大佬