本帖最后由 痞孑 于 2018-2-9 21:58 编辑
1.基础套路解析 举个例子:火柴人鬼:忍者战士这个游戏 把游戏的dll解压到桌面 接着打开Dnspy然后把dll添加到Dnspy
接着我们进游戏的商店内看下
已知金币数量,那么就好办了 接着在Dnspy搜索字符串7000看看有没有收获
搜索字符串得到两个结果
可以看到Inapp Controller这个类 我们双击进去看看
进来之后我们可以很清楚的看到有一个BuySuccess类(购买成功)
之后我们把这个类里边代码复制一下
从同路径下的Buy打开这个类
右键编辑代码,把我们刚复制的代码粘贴
粘贴之后,乍眼一看,哇~各种蛇皮错误
如出现红色字体就代表这些都是无效代码 下面会讲如何处理这些无效代码
未处理如下
if (inAppID != null) {
if (!(inAppID == "com.unimob.stickman.ghost.ninja.warrior.7000golds"))
{
if (!(inAppID == "com.unimob.stickman.ghost.ninja.warrior.40000golds"))
{
if (!(inAppID == "com.unimob.stickman.ghost.ninja.warrior.90000golds"))
{
if (!(inAppID == "com.unimob.stickman.ghost.ninja.warrior.200000golds"))
{
if (!(inAppID == "com.unimob.stickman.ghost.ninja.warrior.450000golds"))
{
if (inAppID == "com.unimob.stickman.ghost.ninja.warrior.fairy")
2. 处理无效代码
如if (inAppID != null)需替换成productId 这里说一下为什么用productId替换 大概意思也就是一个商品一个ID是商店内展示的金币解锁等等, 可以看到 处理过后完美解决
处理之后如下
if (productId != null)
{
if (!(productId == "com.unimob.stickman.ghost.ninja.warrior.7000golds"))
{
if (!(productId == "com.unimob.stickman.ghost.ninja.warrior.40000golds"))
{
if (!(productId == "com.unimob.stickman.ghost.ninja.warrior.90000golds"))
{
if (!(productId == "com.unimob.stickman.ghost.ninja.warrior.200000golds"))
{
if (!(productId == "com.unimob.stickman.ghost.ninja.warrior.450000golds"))
{
if (productId == "com.unimob.stickman.ghost.ninja.warrior.fairy")
之后我看一下能否保存
结果是完全是可以保存的
后续
保存成功的话基本上就算完成内购了 保存修改后的dll 替换原dll 之后签名安装 发送到模拟器或者手机测试就ojbk了 Dnspy工具下载链接https://www.52pojie.cn/thread-459888-1-1.html 总结 1.把购买失败内的代码替换成购买成功 2.处理无效代码
常见问题解答 1.保存时报错应该怎么处理
答:警告可以不管它,在红色字的清除后,带x的一般是因为某些符号或是关系没理清,双击下带×的行,删除或添加符号,理清关系,还是可以保存成功的
2.获得商品代码添加不进去怎么办
答:用以上方法还是无法成功,不如去随便找个触发条件,实际游戏中每个按键都可以作为触发条件,只要想办法把商品直接得到就行了,需要比较深厚(熟练)的自定义dll功底
3.找不到获得商品代码怎么办
答:有的谷歌游戏就是坑爹就是晃点你,他只是画了个商店却不给商品,本来就不存在内购。有的存在却因为功底不足没耐心找不到,实在没办法,搞点简单的破解可否?不要一棵树上吊死。
附件(供大家练手) |