0%

逆向工程核心原理第二章

准备阶段
  • 软件:Ollydbg,visual studio community

  • 使用visual studio创建一个c++控制台项目,粘入以下代码,然后运行生成**x86(Win32)**的HelloWorld.exe文件

    1
    2
    3
    4
    5
    6
    7
    #include <windows.h>
    #include <tchar.h>

    int _tmain(int argc, TCHAR* argv[]) {
    MessageBox(NULL, L"HelloWorld", L"blog.iz4.cc", MB_OK);
    return 0;
    }
  • 《逆向工程核心原理》作者提供的资源下载github仓库:https://github.com/reversecore/book.git;书中用到的代码和可执行文件都能在里面获取

阅读全文 »

前言

  • 最近尝试给谷歌nexus 5编译HavocOS (android 11分支),折腾一大堆后终于生成了zip刷机包,结果死活刷不进去,卡在"E1001: Failed to update system image",原因推测是:system分区太小,因为编译时报错提示system镜像过小,所以在编译配置文件中BoardConfig.mk调整过system分区的大小,修改后才编译打包成功。
  • 显然只改BoardConfig.mk,只是能正常编译打包,但是手机(物理)上的system分区还是那么大,太大刷不进去
  • 为了验证是否是system分区太小缘故,因为编译还生成了system.img的中间文件,这个img是可以用fastboot刷入的,手机usb连接到电脑,进入bootloader模式,运行fastboot system system.img,不出意外失败了,而且报错信息为:"remote: 'size too large'",这就验证了是手机/system分区不够大的原因。所以问题就变为了怎么扩增system分区?
  • 经过网上查找相关教程,最终按这个问题里的答案:https://android.stackexchange.com/questions/216123/android-how-to-increase-system-partition-and-decrease-data-partition尝试成功

准备阶段

阅读全文 »

编译环境

  • 运行内存至少8G,运行内存太小会导致编译过程出现奇怪错误
  • JDK(本文编译的为cm-14.1,即Android 7.1,因此需要JDK8,Android6及之前的需要更早的JDK版本)
  • 区分大小写的文件系统,MacOS和Windows默认的文件系统不区分大小写,使用不区分大小写文件系统编译Android会出错。docker容器中,建议直接docker里面的目录下编译,而不是挂载宿主机的目录下编译
  • 建议使用非root用户编译
阅读全文 »

前言

  • 我之前的文章解决selenium使用location定位与截图中的坐标偏差问题中提到了,如何利用selenium截取验证码,但是并没有讲该怎么去识别验证码,原因是之前一直没有找到好的方法,一开始尝试过pillow + pytesseract,但是效果很差,显然这种验证码不能用这方法。也尝试过网上的一些在线识别,效果不错,但缺点就是要钱。
  • 再后来在github上发现了这个项目https://github.com/nickliqian/cnn_captcha,然后又在这篇文章中Tensorflow实战(二):Discuz验证码识别找到了生成Discuz验证码的php代码,这篇文章也给出了他的深度学习的识别验证码的代码,但我测试时没跑成功,又不懂这方面的知识,排不了错,所以最后选择的是用cnn_captcha这个项目来训练模型,用他给的php代码生成训练用的数据集。最终发现训练的模型效果还不错,一开始用2万张图片训练,虽然训练集准确率达到了100%,但测试集图片准确率一直为0,增加图片数量得到改善,最后调整到用20万张图片训练,测试集字符识别率和图片准确率均达到了99%,实际测试从目标网站爬取下来的图片识别准确率也有80%,这个准确率自用完全OK。
阅读全文 »

快速开始

  • 以清华AOSP镜像为例搭建本地AOSP次级镜像

  • 清华AOSP官网

  • 安装repo

    1
    2
    3
    4
    5
    mkdir ~/bin
    PATH=~/bin:$PATH
    # curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
    curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
    chmod a+x ~/bin/repo
  • 修改repo默认REPO_URL(默认为谷歌的)

    1
    vi ~/bin/repo
  • 找到REPO_URL,将值替换为:https://mirrors.tuna.tsinghua.edu.cn/git/git-repo

    1
    REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
阅读全文 »

起因

  • 一开始想用selenium实现某网站的自动登录,这就不可避免的遇到验证码识别问题,要识别验证码那肯定得先获得验证,网上给的获取验证码图片的方法是,先利用WebDriver的save_screenshot函数对网页进行截图,然后再获得验证的图片大小并用location来定位获得验证码的坐标,最后从截图中截取出验证码来
  • 实际试的过程发现,还是有坑在里面,就是location定位的坐标跟截图里的对应不上,网上找了下相关文章,发现这个:之所以会出现这个坐标偏差是因为windows系统下电脑设置的显示缩放比例造成的,location获取的坐标是按显示100%时得到的坐标,而截图所使用的坐标却是需要根据显示缩放比例缩放后对应的图片所确定的,因此就出现了偏差。 解决这个问题有三种方法:1.修改电脑显示设置为100%。这是最简单的方法;2.缩放截取到的页面图片,即将截图的size缩放为宽和高都除以缩放比例后的大小;3.修改Image.crop的参数,将参数元组的四个值都乘以缩放比例。,但网上给的解决方案不是很好,因为需要写死缩放比例并且是windows下的情况,而我测试用的是mac os,测试好后打算放树莓派上跑,总不能改比例改来改去,有没有办法可以自动计算缩放比例?
阅读全文 »

  • 问题:switch有个奇葩设定,就是连接的wifi必须能访问互联网,不然不给连,自动断开。但有时候需要就是需要在局域网中使用,有没有办法可以绕过这个校验?
阅读全文 »