2016-10-02 105 views
0

我在編輯一些smali代碼,我需要將某個貨幣包裹的值更改爲遊戲中的成就實體。如何將數值設置爲smali中的整數類

.method public writeToParcel(Landroid/os/Parcel;I)V 
.locals 0 

invoke-static {p0, p1, p2}, Lcom/google/android/gms/games/achievement/AchievementEntityCreator;->a(Lcom/google/android/gms/games/achievement/AchievementEntity;Landroid/os/Parcel;I)V 

return-void 
.end method 

Landroid/os/Parcel類設置爲整數。我想爲這個班級設置一個10億的固定數值。每當完成一項成就時,這會給我一個這樣大小的遊戲內貨幣包裹 - 代碼是不言自明的。那可能嗎?如果是這樣,該怎麼辦?

注意:我不是黑客黑客利用這些知識侵犯任何人的財產。這只是簡單地將測試應用程序逆向工程化爲暫時的,無害的學習體驗,而不是用於商業流通或任何惡意目的。

+0

是的,這是可能的。不,我不會告訴你如何。你在學習,對吧? :)提示:看看'const'操作碼。 – JesusFreke

回答

0

那麼,讓我們看看,這是我想出的。提示是非常令人滿意的男人,所以謝謝! 這裏是我更新的代碼:

.method public writeToParcel(Landroid/os/Parcel;I)V 
.locals 0 

const p2, 0x3b9aca00 

invoke-static {p0, p1, p2}, Lcom/google/android/gms/games/achievement/AchievementEntityCreator;->a(Lcom/google/android/gms/games/achievement/AchievementEntity;Landroid/os/Parcel;I)V 

move-result-object p2 

return-void 
.end method 

我用了IEEE 754轉換器找到的Dalvik字節碼相當於1十億(導致0x4e6e6b28) - 將這項工作?其在這裏:https://www.h-schmidt.net/FloatConverter/IEEE754.html。 我在這裏訪問了你的頁面:https://github.com/JesusFreke/smali/wiki/Registers和它說如何通過方法參數,我拿起了一些指導:)我看到有3個參數寄存器(Lcom/google/android/gms/games/achievement/AchievementEntityCreator; Lcom/google/android/gms/games/achievement/AchievementEntity; Landroid/os/Parcel;)是p0,p1和p2。所以這是我最好的嘗試......如果我對任何事情都有錯,建設性的幫助會很棒!

+0

@JesusFreke我試着改變上面的值,但是我對它不太自信......我不知道在const之後的/ 4是什麼,或者它是否正確添加它或者如果數值是正確的二進制格式,並且正確設置爲Landroid/os/Parcel參數的值。正如我之前所說,您的建設性反饋將不勝感激! – GoldenAge153

+0

有幾點。 1.移動結果指令必須緊跟在正在得到結果的調用指令之後。在調用和移動結果指令之間插入指令是無效的。 2. IEEE 754用於浮點數。你想要一個整數。所以這是錯誤的:) 3.該方法的返回值是V(void),但你試圖返回一個值。 4.我懷疑你想在調用'... AchievementEntityCreator; - > a'方法之前更改p2的值 – JesusFreke

+0

@JesusFreke WOW!它工作兄弟!我剛剛獲得40分殺死或成就之後的成就,簽名並將apk移至我的手機,並在一小部分加載後,我的遊戲中的幣值爲1,000,000,043!我能夠沒有任何限制地使用學分,但我認爲它可能會被重置,因爲遊戲具有非常強大的反黑客系統,即使我從遊戲中刪除了禁止事件,他們可能會有一個主持人做它大聲笑。無論如何,這是一次非常棒的學習體驗,我總體上對smali和逆向工程感覺更加舒適! – GoldenAge153