首页
社区
课程
招聘
[讨论]关于tcp传输的疑惑
发表于: 2018-6-9 16:14 3053

[讨论]关于tcp传输的疑惑

2018-6-9 16:14
3053
最近破解一个app,逆向tcp传输的时候,发现对方用的是netty,传输的是序列化的对象,定义的对象用到了谷歌的包,如果完全还原得自己照着写一个app,还得导入各种开发包,比较麻烦,有没有什么其他办法。。目前自己用的办法是hook对象,使用反射,不断调用,但是还是觉得比较麻烦。,想问问有没有比较其他的好的方式?




关于之前自己写的app调试插件的问题。。。

好几位小伙伴私信我问我有没有更加完善的版本。。

当然有啊。。。

成品就不发了。。。

关键问题发一下,基本全能hook,

有些私信的问题是。。字节,等转换显示不出来内容的问题,还有返回值的问题。,。。

这些其实自行学习一下,自己就可以写一个自己的工具,也不难。,。。望努力。

下面说一下自己hook期间遇见的问题。

多个dex

XposedHelpers.findAndHookMethod(Application.class, "attach", Context.class, new XC_MethodHook() {
   @Override
   protected void afterHookedMethod(MethodHookParam param) throws Throwable {
    ClassLoader cl = ((Context) param.args[0]).getClassLoader();
                                Class c = cl.loadClass(xs.getString("classes", null));
    Utils.findMethod(c);
   
    }
   }
});


findMethod 方法:
public static void findMethod(Class hookclass) {
if(!hookclass.isInterface()){
for (Method method : hookclass.getDeclaredMethods()) {
if (!Modifier.isAbstract(method.getModifiers())) {
findParamFormMethod(method, hookclass.getName(),hookclass);
}
}
}

}
findParamFormMethod :
public static void findParamFormMethod(final Method method, final String className,final Class cc) {
XposedBridge.hookMethod(method, new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
// TODO Auto-generated method stub

}
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
//输出内容

}
});
}




第二个问题,app动态加载jar的问题

XposedHelpers.findAndHookMethod(ClassLoader.class, "loadClass", String.class, new XC_MethodHook() {
            @Override
            protected void afterHookedMethod(final MethodHookParam param) throws Throwable {
                if (param.hasThrowable()) return;
                Class<?> cls = (Class<?>) param.getResult(); 
                String name = cls.getName();
                
                

                
               /* if ("*****************".equals(name)) {
                    // 所有的类都是通过loadClass方法加载的
                    // 所以这里通过判断全限定类名,查找到目标类
                    // 第二步:Hook目标方法
                XposedHelpers.findAndHookMethod(cls, "xXXxOoOOxoXXoXoO", URL.class,byte[].class,String.class, new XC_MethodHook() {
                        @Override
                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                            XposedBridge.log(param.method + " params: " + Arrays.toString(param.args));
                        }

                        @Override
                        protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                            XposedBridge.log(param.method + " return: " + param.getResult());
                        }
                    });
                }*/




每个jar都需要通过 loadClass加载,所以就是这个原理

跟踪一个app的行为:

eacK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1L8r3!0Y4i4K6u0W2j5%4y4V1L8W2)9J5k6h3&6W2N6q4)9J5c8Y4y4%4K9h3#2E0k6i4t1J5x3o6l9H3i4K6u0r3j5i4u0@1K9h3y4D9k6g2)9J5c8X3c8W2N6r3q4A6L8s2y4Q4x3V1j5#2x3U0x3^5y4o6R3I4y4H3`.`.

加以修改,可以看到整个app的流程






[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 289
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
2018-6-10 20:43
0
雪    币: 289
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
。。。
2018-6-14 14:25
0
雪    币: 1144
活跃值: (1557)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
porotbuf把,你你逆的是腾迅系列把
2018-6-14 15:54
0
游客
登录 | 注册 方可回帖
返回