Articles of 反向工程

AR Drone 2.0中使用的dev / ttyO0 – 逆向工程

我读了一篇有关Parrot的AR Drone 2.0编码的有趣文章。 在这段代码中,我们使用nodeJS来与无人机通话。 因此,代码首先创build一个/dev/ttyO0 我开始了解更多关于linuxfunction的背景,并希望知道: 你怎么最初发现dev / ttyO0正在被使用,例如在Linux上运行的无人机上。 我认为这是一种逆向工程,但是正在使用什么工具或命令呢? 当我想要对像无人机这样的系统进行逆向工程,并找出哪些命令正在发送,有没有像“嗅探器”来找出哪些命令正在发送? 我知道这不是一个简单而简单的答案,但是我很乐意了解更多信息,或者了解一下这方面的知识。 但最初有关寻找合适的设备的问题将是非常有趣的。 谢谢

在iMac上逆向devise“目标显示模式”

我有一个计算机实验室,有一些老式的iMac电脑(2011年左右)。 大多数人现在只是想用它们作为笔记本电脑的显示器,而在MacOS中使用目标显示模式,这个(大部分)工作正常。 不过,我也想在Linux下支持这一点,它与MacOS平行安装在所有的iMac上。 我对Linux内核相当有经验(我已经编写了内核驱动程序),但是我基本上对MacOS一无所知 – 因此,我正在寻找关于如何确定TDM是如何被触发的指针(即Cmd 后会发生什么-F2被按下)。 我猜这主要涉及到编写一些英特尔GPU寄存器,但我不知道哪一个MacOS实际上是负责的。 任何提示?

编写nm-like命令的代码

出于对逆向工程的好奇心,我正在考虑编写一个简单的程序(使用C ++),将可执行文件作为input,并生成所有可执行文件的源程序的一部分function的名称。 任何指针,我应该怎么去呢? 一步一步的方法将不胜感激! 编辑: 平台linux和我关心a.out格式的可执行文件。

如何找出.class文件的作用?

我想弄清楚如何在一块硬件上重置电池的年龄。 在TomCat文件中,我find了提取年龄并呈现html的函数: #macro (renderBatteries $batteryList) #set ($smartBatteryData = $rack.getSmartBatteryData()) #foreach ($battery in $batteryList) … <td class="formlabel">Age:</td> <td width="50%" class="formvalue">$!battery.getBatteryAge() Day(s) 所以我想有趣的function,弄清楚它从哪里得到的信息是rack.getSmartBatteryData() ? 如果我为我所看到的grep ~# grep -R 'getSmartBatteryData' /opt/* /opt/smu/tomcat/webapps/mgr/templates/app/screens/storage/racks/RackMacros.vm:#set ($smartBatteryData = $rack.getSmartBatteryData()) Binary file /opt/smu/tomcat/webapps/mgr/WEB-INF/lib/SYMsdk.jar matches Binary file /opt/smu/tomcat/webapps/mgr/WEB-INF/classes/com/bluearc/mgr/data/storageManagement/Rack.class matches Binary file /opt/smu/tomcat/webapps/mgr/WEB-INF/classes/com/bluearc/mgr/services/storageManagement/LSI/LsiRackViewService.class matches /opt/smu/apache-tomcat-6.0.29/webapps/mgr/templates/app/screens/storage/racks/RackMacros.vm:#set ($smartBatteryData = $rack.getSmartBatteryData()) Binary file /opt/smu/apache-tomcat-6.0.29/webapps/mgr/WEB-INF/lib/SYMsdk.jar matches Binary file /opt/smu/apache-tomcat-6.0.29/webapps/mgr/WEB-INF/classes/com/bluearc/mgr/data/storageManagement/Rack.class […]

从ELF中删除组装说明

我正在处理一个混淆的二进制文件作为一个裂缝挑战的一部分。 它有一系列的push , pop和nop指令(重复数千次)。 在function上,这些块对程序没有任何影响。 但是,他们很难做出CFG的代和逆转的过程。 有关于如何将说明更改为nop的解决scheme,以便我可以删除它们。 但在我的情况下,我想彻底删除这些指示,以便我可以更好地了解CFG。 如果指令被剥离,我知道内存偏移也必须修改。 据我所知,没有可用的工具直接实现这一点。 我正在使用IDA Pro评估版。 我也接受使用其他逆向工程框架的解决scheme。 如果是可以编写脚本的话最好。 我经历了一个类似的问题,但提出的解决scheme不适用于我的情况。

在可执行二进制文件中更改一个特定的共享库

我在这方面是新手,所以和我一起裸照。 这里写的curlftpfs是非常缓慢的,因为最新的libcurl3-gnutls的bug。 由于此软件包具有较大的反向依赖关系(可通过apt-cache showpkg libcurl3-gnutls:amd64或apt-cache rdepends libcurl3-gnutls:amd64进行validation),因此不build议降级。 所以我决定以不同的方式降级。 我已经检查存储库中的可用版本: $ apt-cache policy libcurl3-gnutls:amd64 libcurl3-gnutls: Installed: 7.43.0-1ubuntu2.1 Candidate: 7.43.0-1ubuntu2.1 Version table: *** 7.43.0-1ubuntu2.1 0 500 http://sk.archive.ubuntu.com/ubuntu/ wily-updates/main amd64 Packages 500 http://security.ubuntu.com/ubuntu/ wily-security/main amd64 Packages 100 /var/lib/dpkg/status 7.43.0-1ubuntu2 0 500 http://sk.archive.ubuntu.com/ubuntu/ wily/main amd64 Packages 然后我已经下载并提取了比安装的版本旧的版本: $ apt-get install -d libcurl3-gnutls=7.43.0-1ubuntu2 $ sudo mv /var/cache/apt/archives/libcurl3-gnutls_7.43.0-1ubuntu2_amd64.deb . $ dpkg […]

Windows x64(侵入式)单一链接列表

我目前正试图绕过一些Windows旁观列表,我看到一些内存地址让我感到困惑。 从我发布的另一个问题,一些代码被生成,感谢sergmat ( 原始问题 ): lkd> !lookaside iopsmallirplookasidelist Lookaside "" @ 82d5ffc0 "Irps" …. lkd> dt _SINGLE_LIST_ENTRY 82d5ffc0 nt!_SINGLE_LIST_ENTRY +0x000 Next : 0x86737e30 _SINGLE_LIST_ENTRY …. lkd> !pool 0x86737e30 Pool page 86737e30 region is Nonpaged pool *86737e28 size: a0 previous size: 48 (Allocated) *Irp Pooltag Irp : Io, IRP packets 从上面的WinDBG输出中可以看出,基本上是在地址0x82d5ffc0处有一个单独的链表。 此输出是在32位Windows 7系统上生成的。 不过,在Windows 7 64位系统上执行相同操作时,这是我感到困惑的地方,这是输出(地址明显不同): […]

如何在Linux上logging(反向工程)PCI事务

我想logging设备驱动程序的所有读/写PCI事务。 有没有办法通过Linux命令或软件来做到这一点?

在Android中存储私人API密钥的最佳做法

我正在开发一个应用程序,并使用Dropbox和Google Drive等多个第三方API和SDK。 这些库需要API密钥。 私人的和公共的。 目前我有这样的东西: public class DropboxService { private final static String APP_KEY = "jk433g34hg3"; private final static String APP_SECRET = "987dwdqwdqw90"; private final static AccessType ACCESS_TYPE = AccessType.DROPBOX; // SOME MORE CODE HERE } 应用程序密钥应该保密 – 但是当发布应用程序时,他们可以被一些人扭转。 我想知道什么是最好的encryption,混淆或什么使这个安全。 我想过使用ProGuard,但是为整个项目设置ProGuard需要花费几个星期的时间。 这就是为什么我只想使用ProGuard来存储私钥和其他敏感数据的重要类。 这是好的还是有其他的方法吗? 你怎么看?

奇怪的ELF二进制

我有一个奇怪的ELF二进制文件。 我可以在32位Linux上运行这个二进制文件。 但是如果我用IDA拆装器打开这个二进制文件,IDA会说“无效的入口点”。 readelf的结果如下: root@meltdown-VirtualBox:/home/meltdown# readelf -S -l SimpleVM There are no sections in this file. Elf file type is EXEC (Executable file) Entry point 0xc023dc There are 2 program headers, starting at offset 52 Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x000000 0x00c01000 0x00c01000 0x013c7 0x013c7 RWE 0x1000 LOAD 0x00019c […]