duangsuse::Echo
存下来的本地偏移量将会起到至关重要的作用(尤其是现在 duangsuse 还只会很模式化的给本地栈帧分配空间的时候)
duangsuse 已经能够根据 fbreg 偏移量和一个参数的实际 ebp 偏移计算出其他所有本地变量的 ebp 偏移量,这意味着我可以把所有本地变量访问的汇编偏移量命名,结果将是完工后的汇编既能生成 CoolApk API 会接受的 X-App-Token,又非常好看,容易理解和翻译成其他形式。
感谢带 -g 的 GCC 4.9 🤔
要不然可没有那么容易喽(像我之前一样一个一个猜,最后写出来的算法还是错的)
感谢带 -g 的 GCC 4.9 🤔
要不然可没有那么容易喽(像我之前一样一个一个猜,最后写出来的算法还是错的)
duangsuse::Echo
好 多 🤐
发出了 一个一个算 size 好麻烦 的声音
duangsuse::Echo
有了调试符号的帮助,所有本地变量都可以算出来,类型和名字都有了 🤔
;; LINE FBREG TYPE NAME OFFSET
;; L55 (-432) jclass android_content_Context [ebp-0x1a8]
;; L56 (-428) jmethodID midGetPackageName [ebp-0x1a4]
;; L60 (-424) jstring packageName [ebp-0x1a0]
;; L61 (-420) char *nPackageName [ebp-0x132]
;; L63 (-314) char cp[] [ebp-0xdd]
计算方法是什么呢 🤔先算出当前项的长度:
比如算 L61 的 nPackageName
用 420 减去 314 得出差 106(虽然它好像的确没那么长)
然后用上一个的偏移量减去它的长度
hex 0x1a0 - 106 就是下一项的地址 [ebp-0x132] 喽duangsuse 果然是数学不好,其实公式就是
def n(s) ;hex (s - 8); end ...
duangsuse::Echo
是真的比 Java Bytecode 反汇编还容易理解,看 Java 你至少还得分析本地表和参数栈,看这个你只需要 SSA 思路(基本(当然,用 Java 反编译器的除外
所以说,在 Release 版本里加调试符号的小哥,或者说,在 Release 的 APK 里用 Debug 的 Library 的小哥,辛苦了 👍
🤔 目前还有几个
repne scasb 的逻辑(正常一点的汇编程序员会使用的代码)我还在理解,不过,我觉得酷安的 API 限制不能限制住 Spectrum 客户端了
duangsuse::Echo
开源在这里
https://github.com/duangsuse/CoolTok/issues/1#issue-412032564
他们的算法大概是这样的,到这里自然还是再次感谢某位不知名(其实已经知道了)的酷安小哥,没有这些调试符号的帮助,没法这么快啊! 🤔
他们的算法大概是这样的,到这里自然还是再次感谢某位不知名(其实已经知道了)的酷安小哥,没有这些调试符号的帮助,没法这么快啊! 🤔
GitHub
NOTE · Issue #1 · duangsuse/CoolTok
; android_content_Context = (*env)->GetObjectClass(env, entryObject); ; midGetPackageName = (*env)->GetMethodID(env, android_content_Context, "()Ljava/lang/String;", "getPackag...
duangsuse::Echo
你们这个是个什么口令生成算法啊,你们这是雷普前端开发者们啊你们这个算法。 麻烦你们,真的太过分了你们搞这个『加密算法』干什么,我的项目每一行代码都过不了那个 lint 检查啊,它现在没法连上你们的 API,你叫我项目怎么办啊,它还事个幼儿园基本的弱智应用好不好。 你们这是什么算法啊,哼!哼!啊啊啊啊啊啊啊。你们害死我项目了谁是出要写这种东西主意的快出来你们写代码的,再不出来我 ****** 了啊! 我跟你们说你们这群 Android 开发者啊,一天到晚搞什么这些加密啊代码保护啊会害死你们的(迫真) 你…
一瞬破解 🤔
就是因为编译时带了个
以前调试符号里的本地变量名只能辅助逆向工程,实际还得我去根据 call 完后的
现在调试符号主宰整个分析过程,全部变量 fbreg 手算偏移量出来,瞬间还原所有逻辑...
调试符号真是个危险的东西啊 🤔
酷安的
当然你们也可以不屑我,觉得我是耗子,或者动用法律武器,但是你们也不得不承认,如果我匿名发布逆向工程结果,恐怕酷安要想根除也很难吧(除非他们强迫所有 v8 的用户更新到最新的『修复』版本,还得更新口令生成算法,因为我逆向分析的就是 v8 最新版客户端的原生口令生成)!甚至不会有人知道算法是被我逆向还原出来的。
我觉得吧,耗子归耗子,说是人品有问题危险也不为过,但是你们有没有比耗子厉害的地方呢?有没有看到耗子身上值得自己学习的地方呢?耗子逆向你们的东西学到了很多,你们又从这件事情里学到了什么呢?
真正的勇士善于从敌人身上学到新的东西,会在战斗中成长,而不是视自己的能力为固定不变的,永远停留在某一个时代不往前走也不回头向后看,永远停留在某个固定的 field 不再动弹。
曾经那么多汇编程序员去哪里了呢?那些曾经 DOS 时代的程序员消失了吗?为什么找不到他们了呢... 是现在又转移到嵌入式领域了吗?
曾经的人大概和我不是一个世界的吧.... 现在看来,是鼻祖呢,可是现在又有多少人会操心这些。
... 有多少人还记得有个东西叫汇编器、现在的计算机还是 19 世界老冯诺伊曼那一套、多少人看到了编译器和解释器们的工作方式,多少人能在脑子里完全模拟彻底弄明白某些东西而不是对书本字面只是浅薄地套弄文字... 还有谁再能把 PostgreSQL 拿来进行泛向数据处理?即使是 Web 前端,能真正精通的人又有多少... 有多少人能看见 MS Word 和 Firefox 背后的相似性,多少人能看到那么多形式背后的理念和规范... 多少人真正看到了那些让人不明所以文字引用背后实在的东西...
大佬的确还是存在的,可是真正有人关心他们吗,很多人只知道霍金.... 图灵.... 为什么不去接触一下,看看他们究竟是什么,他们做了什么,学术界都是怎么评价的,明明那么公开,可是却没人动这些东西,甚至连自己的菜 🐔 都看不到了,在对自己还是很浅薄很不充实的能力而骄傲自满?
...其实偶尔骄傲一下也没什么,只是不能因为骄傲而停下自己的脚步,看不清自己究竟是什么水平了。
那些努力真的也叫努力吗,以前给 x86 机写汇编的人,要看 Intel 那几百页厚厚的本本有资格开始工作,现在越来越简单了,可是视角也开始局限在某个很浅很浅的层面... 不向上看也不朝下走走...
经过一件事情,总要学点什么。
真的是一件值得思考的问题 #reveng
就是因为编译时带了个
-g 保留了调试符号,结果一个晚上被瞬间标注栈帧本地变量瞬间逆向出了校验和生成算法 🤔以前调试符号里的本地变量名只能辅助逆向工程,实际还得我去根据 call 完后的
mov xxx, eax 猜谁是谁现在调试符号主宰整个分析过程,全部变量 fbreg 手算偏移量出来,瞬间还原所有逻辑...
调试符号真是个危险的东西啊 🤔
酷安的
X-App-Token 口令生成算法可谓是人间之鉴了,不良实践的后果就是这么严重,帮助『破解者』把时间开销降到了最低,就是自己的利益受到损害啊!当然你们也可以不屑我,觉得我是耗子,或者动用法律武器,但是你们也不得不承认,如果我匿名发布逆向工程结果,恐怕酷安要想根除也很难吧(除非他们强迫所有 v8 的用户更新到最新的『修复』版本,还得更新口令生成算法,因为我逆向分析的就是 v8 最新版客户端的原生口令生成)!甚至不会有人知道算法是被我逆向还原出来的。
我觉得吧,耗子归耗子,说是人品有问题危险也不为过,但是你们有没有比耗子厉害的地方呢?有没有看到耗子身上值得自己学习的地方呢?耗子逆向你们的东西学到了很多,你们又从这件事情里学到了什么呢?
真正的勇士善于从敌人身上学到新的东西,会在战斗中成长,而不是视自己的能力为固定不变的,永远停留在某一个时代不往前走也不回头向后看,永远停留在某个固定的 field 不再动弹。
曾经那么多汇编程序员去哪里了呢?那些曾经 DOS 时代的程序员消失了吗?为什么找不到他们了呢... 是现在又转移到嵌入式领域了吗?
曾经的人大概和我不是一个世界的吧.... 现在看来,是鼻祖呢,可是现在又有多少人会操心这些。
... 有多少人还记得有个东西叫汇编器、现在的计算机还是 19 世界老冯诺伊曼那一套、多少人看到了编译器和解释器们的工作方式,多少人能在脑子里完全模拟彻底弄明白某些东西而不是对书本字面只是浅薄地套弄文字... 还有谁再能把 PostgreSQL 拿来进行泛向数据处理?即使是 Web 前端,能真正精通的人又有多少... 有多少人能看见 MS Word 和 Firefox 背后的相似性,多少人能看到那么多形式背后的理念和规范... 多少人真正看到了那些让人不明所以文字引用背后实在的东西...
如果翻译器对程序进行了彻底的分析而非某种机械的变换,而且生成的中间程序与源程序之间已经没有很强的相似性,我们就认为这个语言是编译的。彻底的分析和非平凡的变换,是编译方式的标志性特征。— Intermediate Representation [origin]
如果你对知识进行了彻底的分析而非某种机械的套弄,在你脑中生成的概念与生硬的文字之间已经没有很强的相似性,我们就认为这个概念是被理解的。彻底的分析和非凡的变换,是获得真知的标志性特征。
大佬的确还是存在的,可是真正有人关心他们吗,很多人只知道霍金.... 图灵.... 为什么不去接触一下,看看他们究竟是什么,他们做了什么,学术界都是怎么评价的,明明那么公开,可是却没人动这些东西,甚至连自己的菜 🐔 都看不到了,在对自己还是很浅薄很不充实的能力而骄傲自满?
...其实偶尔骄傲一下也没什么,只是不能因为骄傲而停下自己的脚步,看不清自己究竟是什么水平了。
那些努力真的也叫努力吗,以前给 x86 机写汇编的人,要看 Intel 那几百页厚厚的本本有资格开始工作,现在越来越简单了,可是视角也开始局限在某个很浅很浅的层面... 不向上看也不朝下走走...
经过一件事情,总要学点什么。
真的是一件值得思考的问题 #reveng