一、目标
Unidbg的作者最近更新挺频繁,我们得跟上大佬的脚步,这样才不会被落下
二、分析
代码对比
先把最新的代码拉回来
git pull
然后和我们之前的代码对比下,看上去改动挺多。我手工合并了3-5个文件,吐了一口老血…… 卒
git
作为一个有证的高级程序员,居然还用手工合并代码,差点都被李老板怀疑我的高程证书是中关村办的了。
我们之前fork的版本在
现在我们的目标是要把 github.com/zhkl0228/un… 里面最新的更新合并过来。
首先
fenfeiMac:unidbg fenfei$ git remote -v // 查看远程状态 origin https://github.com/fenfei331/unidbg.git (fetch) origin https://github.com/fenfei331/unidbg.git (push)
然后 加入要同步的 远程仓库
git remote add upstream https://github.com/zhkl0228/unidbg
再查看一下状态
fenfeiMac:unidbg fenfei$ git remote -v origin https://github.com/fenfei331/unidbg.git (fetch) origin https://github.com/fenfei331/unidbg.git (push) upstream https://github.com/zhkl0228/unidbg (fetch) upstream https://github.com/zhkl0228/unidbg (push)
没问题,添加成功
那就开始合并吧
先将远程所有的分支fetch下来,存在本地
fenfeiMac:unidbg fenfei$ git fetch upstream remote: Enumerating objects: 6513, done. remote: Counting objects: 100% (1205/1205), done. remote: Compressing objects: 100% (269/269), done. remote: Total 6513 (delta 870), reused 1123 (delta 814), pack-reused 5308 Receiving objects: 100% (6513/6513), 30.48 MiB | 6.00 MiB/s, done. Resolving deltas: 100% (2852/2852), completed with 206 local objects. From https://github.com/zhkl0228/unidbg * [new branch] master -> upstream/master * [new tag] v0.9.2 -> v0.9.2 * [new tag] v0.9.3 -> v0.9.3
然后正式开始合并
git merge upstream/master
出来个类 vi的界面,需要我们填 日志,
按 I 键,然后 输入 update 然后 esc -> shift+: -> wq 保存退出
fenfeiMac:unidbg fenfei$ git merge upstream/master Removing unidbg-dynarmic/src/test/java/com/github/unidbg/arm/backend/dynarmic/DynarmicTest.java Removing unidbg-dynarmic/src/test/java/com/github/unidbg/arm/backend/DynarmicBackendTest.java Removing unidbg-dynarmic/src/main/java/com/github/unidbg/arm/backend/dynarmic/DynarmicLoader.java Removing unidbg-api/src/main/java/com/github/unidbg/arm/backend/dynarmic/EventMemHookNotifier.java Auto-merging unidbg-android/src/main/java/com/github/unidbg/linux/android/dvm/DalvikVM.java Auto-merging unidbg-android/src/main/java/com/github/unidbg/linux/android/dvm/AbstractJni.java Merge made by the 'recursive' strategy. .gitignore | 4 +- README.md | 14 +- backend/dynarmic/README.md | 3 + {unidbg-dynarmic => backend/dynarmic}/pom.xml | 7 +- .../com/github/unidbg/arm/backend/DynarmicBackend.java | 138 +-- .../com/github/unidbg/arm/backend/DynarmicFactory.java | 29 + .../com/github/unidbg/arm/backend/dynarmic/Dynarmic.java | 21 +- .../unidbg/arm/backend/dynarmic/DynarmicBackend32.java | 2 +- .../unidbg/arm/backend/dynarmic/DynarmicBackend64.java | 2 +- ......
好像,真的比较顺利耶,这就合并了?
跑一下试试
我就知道不会这么顺利,
创建Emulator的函数变了
private static AndroidEmulator createARMEmulator() { return AndroidEmulatorBuilder .for32Bit() .build(); // return new AndroidARMEmulator("test"); }
再跑一下
st=1606701201628&sign=59039230dc2e1ea27a4f250d9ec81b8c&sv=111 destroy run
这个值很眼熟哦。
最后更新到我们的GitHub的fork上,直接 git push origin master 就好了。
三、总结
git比svn的功能还是要复杂一些些,熟练使用版本控制工具,才能避免体力劳动
你要心甘情愿地接受失败,你要想出很多办法,然后非常努力地工作,结果却发现这些办法都不管用。接下来你还要反复这样做,直到找到一个管用的方法为止
TIP: 本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系,本文涉及到的代码项目可以去 奋飞的朋友们 知识星球自取,欢迎加入知识星球一起学习探讨技术。有问题可以加我wx: fenfei331 讨论下。
关注微信公众号 奋飞安全,最新技术干货实时推送