本文为看雪论优秀文章
看雪论坛作者ID:别致疯子
前 言
这是2W班8月份的练习题。题目要求是:
ollvm针对加密字符串的解密都是在位于init_array节当中的函数。请编写Xposed插件,完成对测试apk中位于init_array节中的函数的hook,并获取对应的解密后的字符串。
解 体 过 程
1. IDA载入libnative-lib.so,简单看了下:

有静态注册的shell函数,猜想是这个方法sub_87c4里的一个比较,点击进入看看,byte_1B008= v2从一个地址1b008取值跟a1来比较,字符长度为5,重命名mystr。
unsigned long base = NULL;
Dl_info dlinfo;
__attribute__ ((visibility ("hidden"))) void hookMyGetstr() {
void *handle = dlopen_compat("libnative-lib.so", RTLD_NOW);
if (handle != nullptr) {
__android_log_print(4, "test02", "libnative-lib.so handle is not nullptr");
void *temp = dlsym_compat(handle, "Java_com_kanxue_hookinit_1array_MainActivity_Shell");
int rc=dladdr(temp,&dlinfo);
if(dlinfo.dli_fbase!= nullptr){
base= reinterpret_cast<unsigned long>(dlinfo.dli_fbase);
}
}
//unsigned long mtem=findBaseOff("libnative-lib.so");
if(base>0L){
//unsigned long func_addr=base + 0x85E4 + 1;
unsigned long func_addr=base + 0x85E4 + 1;
if (ELE7EN_OK == registerInlineHook((uint32_t) func_addr, (uint32_t) mygetstr,
(uint32_t **) &getstr)) {
if (ELE7EN_OK == inlineHook((uint32_t) func_addr)) {
__android_log_print(4, "XposedFART", "inlineHook getstr success");
} else {
__android_log_print(4, "XposedFART", "inlineHook getstr failure");
}
}
}else{
LOGD("NOT FOUND THE BASE .SO");
}
}
void *(*getstr)(void*, void*, void*)= nullptr;
void *mygetstr(void* str, void*size, void*c){
char* tempStr=(char*)str;
__android_log_print(4, "XposedFART", "getOriArgsStr:%s",tempStr);
void *result = getstr(str, size, c);
__android_log_print(4, "XposedFART", "getResultStr:%s",(char *)result);
return result;
}
void zhudongmyGetstry(){
typedef void *(*xxtest)();
if(base>0L){
//随便对一个有执行了hook方法的调用
xxtest xxtestfucnc= reinterpret_cast<xxtest>(base+0x876C+1);
xxtestfucnc();
__android_log_print(4, "XposedFART", "call xxtestfucnc");
}
}
extern "C" void _init(void) {
__android_log_print(4, "XposedFART", "go into _init");
hookMyGetstr();
zhudongmyGetstry();
}
打印出来了~
别致疯子
https://bbs.pediy.com/user-home-491302.htm
*本文由看雪论坛 别致疯子 原创,转载请注明来自看雪社区。
安卓应用层抓包通杀脚本发布!
《高研班》2021年3月班开始招生!👇
* 戳图片了解详情
# 往期推荐
球分享
球点赞
球在看
点击“阅读原文”,了解更多!
本文始发于微信公众号(看雪学院):hook init_array中函数解密ollvm加密字符串
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论