Forwarded from duangsuse::Echo
唯一的区别是这是
libcore.so 里的逻辑,不是托管于 JVM 上的代码Forwarded from duangsuse::Echo
Forwarded from duangsuse::Echo
0xf7f8d3a0 libcore.so!_JNIEnv::CallObjectMethod(_jobject*, _jmethodID*, ...)@plt
0xf7f8d3f0 libcore.so!_JNIEnv::CallCharMethod(_jobject*, _jmethodID*, ...)@plt
0xf7f8d420 libcore.so!__android_log_print@plt
0xf7f8d380 libcore.so!_JNIEnv::CallStaticObjectMethod(_jclass*, _jmethodID*, ...)@plt
0xf7f8d390 libcore.so!_JNIEnv::CallVoidMethod(_jobject*, _jmethodID*, ...)@plt
0xf7f8d3e0 libcore.so!toMd5@plt
0xf7f8dcf0 libcore.so!byteToHexStr
0xf7f8dd70 libcore.so!toMd5
0xf7f8d3f0 libcore.so!_JNIEnv::CallCharMethod(_jobject*, _jmethodID*, ...)@plt
0xf7f8d420 libcore.so!__android_log_print@plt
0xf7f8d380 libcore.so!_JNIEnv::CallStaticObjectMethod(_jclass*, _jmethodID*, ...)@plt
0xf7f8d390 libcore.so!_JNIEnv::CallVoidMethod(_jobject*, _jmethodID*, ...)@plt
0xf7f8d3e0 libcore.so!toMd5@plt
0xf7f8dcf0 libcore.so!byteToHexStr
0xf7f8dd70 libcore.so!toMd5
Forwarded from duangsuse::Echo
如你们所见 好像是 MD5 对比校验
这不是直接用 Java MessageDigest API 的
我去看看 Android NDK
这不是直接用 Java MessageDigest API 的
我去看看 Android NDK
Forwarded from duangsuse::Echo
(不过废话那么多干什么,这基本可以猜出来了)
(何况猜不出来也没关系,虽然这次我是为了看调戏破解的消息来的,drakeet 也说了那部分是托管代码
(尝试一下,如果
, 直接修改托管于 JVM(准确的说不是 JVM.... 不是重点, 因为编译为 JVM 字节码的语言太多) 上的逻辑即可规避反破解逻辑
(何况猜不出来也没关系,虽然这次我是为了看调戏破解的消息来的,drakeet 也说了那部分是托管代码
(尝试一下,如果
com.drakeet.purewriter.Ww.ww) 这个 Java 方法校验失败返回 true drakeet 会讽刺一下破解者,反之他不知道这是破解版, 直接修改托管于 JVM(准确的说不是 JVM.... 不是重点, 因为编译为 JVM 字节码的语言太多) 上的逻辑即可规避反破解逻辑
Forwarded from duangsuse::Echo
(另外根据代码搜索我只找到了
其实看了看符号表/字符串资源,这个
(排除数目最多 C++ 异常处理的符号,就只剩 toMd5 啊, strcmp 啊, loadSignature 这些明显与校验签名有关的)
com.drakeet.purewriter.Ww.www 这个 native 方法使用 libcore.so )其实看了看符号表/字符串资源,这个
libcore.so 的功能似乎只包括反破解,没有其他功能了(排除数目最多 C++ 异常处理的符号,就只剩 toMd5 啊, strcmp 啊, loadSignature 这些明显与校验签名有关的)
Forwarded from duangsuse::Echo
那么问题来了:
看看
所以如果解密经手 Java API 的话,分析反而会更简单(至少是在我这里)
AndBug 给 Java 密码工具类打断点就行了....
看看
libcore.so 符号表没有什么与解密相关的东西所以如果解密经手 Java API 的话,分析反而会更简单(至少是在我这里)
AndBug 给 Java 密码工具类打断点就行了....
Forwarded from duangsuse::Echo
Forwarded from duangsuse::Echo
毕竟不知道 drakeet 真的那样做(藏鄙视文档)了没有
暂先把目标定为破解签名验证
暂先把目标定为破解签名验证
Forwarded from duangsuse::Echo
libcore.so 里值得一看的几个函数:0xf7ee8740: Java_com_drakeet_purewriter_Ww_www
0xf7ee8350: checkSignature
0xf7ee80c0: loadSignature
0xf7ee7d70: toMd5
另外:
0xf7ee85e0: Java_com_drakeet_rebase_tool_JPEGs_getRemoteUrl
0xf7ee84d0: Java_com_drakeet_rebase_tool_JPEGs_getLocalUrl
0xf7ee8430: JNI_OnLoad
0xf7ee8260: charAt
0xf7ee7cf0: byteToHexStr
Forwarded from duangsuse::Echo
dse@susepc:~/reveng/pw$ andbug shell --pid com.drakeet.purewriter --src smali -d BY2YYB154J084241
!! [Errno 104] Connection reset by peer
dse@susepc:~/reveng/pw$ andbug shell --pid f.oo --src smali -d BY2YYB154J084241
## AndBug (C) 2011 Scott W. Dunlop <[email protected]>
>>
估计要先加调试 Flag 才让连 JDWP(